# Spaces Dev Mode: Pengembangan yang mulus di Spaces

> [!WARNING]
> Spaces Dev Mode merupakan bagian dari paket PRO atau Team & Enterprise.

## Spaces Mode Dev

Spaces Dev Mode adalah fitur yang memudahkan proses debugging aplikasi Anda dan mempercepat iterasi pada Spaces.

Setiap kali Anda melakukan commit perubahan ke repo Space Anda, image Docker yang mendasarinya akan dibangun ulang, dan kemudian virtual machine baru akan diproses untuk menampung container baru.

Mode Dev memungkinkan Anda memperbarui Space Anda jauh lebih cepat dengan menimpa image Docker.

Gambar Docker Dev Mode memulai aplikasi Anda sebagai sub-proses, sehingga Anda dapat memulai ulang aplikasi tersebut tanpa menghentikan kontainer Space itu sendiri. Gambar ini juga memulai server SSH (untuk editor dan terminal lokal) serta server VS Code (untuk VS Code Web di dalam produk) di latar belakang, sehingga Anda dapat terhubung ke Space.

Kemampuan untuk terhubung ke Space yang sedang berjalan membuka beberapa kasus penggunaan:

    - Anda dapat membuat perubahan pada kode aplikasi tanpa Space harus dibangun ulang setiap kali
    - Anda dapat men-debug aplikasi yang sedang berjalan dan memantau sumber daya secara langsung

Secara keseluruhan, hal ini membuat pengembangan dan eksperimen dengan Spaces jauh lebih cepat dengan melewati fase rebuild image Docker.

## Antarmuka

Setelah Dev Mode diaktifkan pada Space Anda, Anda seharusnya melihat modal seperti berikut.

Aplikasi tidak dimulai ulang secara otomatis saat Anda mengubah kode. Agar perubahan Anda muncul di Space, Anda perlu menggunakan tombol `Refresh` yang akan memulai ulang aplikasi.

  Jika Anda menggunakan Gradio SDK, atau jika aplikasi Anda berbasis Python, perhatikan bahwa dependensi tidak diinstal secara otomatis. Anda perlu menjalankan `pip install` secara manual dari VS Code atau SSH.

### Menghubungkan

Dev Mode mengekspos Space yang sedang berjalan sebagai host SSH standar. VS Code dan editor lain terhubung melalui endpoint SSH yang sama.

#### SSH

Setelah Dev Mode berjalan, hubungkan dengan:

```shell
ssh <space-subdomain>@ssh.hf.space
```

Subdomain ditampilkan di modal kontrol Mode Dev. Anda juga dapat mengambilnya secara programatik:

```python
from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)
```

CLI Hugging Face dapat menyelesaikan subdomain dan membuka sesi untuk Anda:

```shell
# SSH into the Space's Dev Mode container
hf spaces ssh username/my-space

# Print the SSH command instead of running it
hf spaces ssh username/my-space --dry-run

# Use a specific identity file
hf spaces ssh username/my-space -i ~/.ssh/id_ed25519
```

Gunakan `--auto` untuk mengaktifkan Dev Mode tanpa meminta konfirmasi jika belum berjalan. Lihat [referensi CLI `hf spaces ssh`](https://huggingface.co/docs/huggingface_hub/package_reference/cli#hf-spaces-ssh) untuk daftar lengkap opsi.

Anda perlu menambahkan kunci SSH publik mesin Anda ke [akun pengguna Anda](https://huggingface.co/settings/keys) agar dapat terhubung ke Space menggunakan SSH. Lihat dokumentasi [Git over SSH](./security-git-ssh#add-a-ssh-key-to-your-account) untuk instruksi yang lebih rinci.

#### VS Code

Anda juga dapat menggunakan instalasi lokal VS Code untuk terhubung ke kontainer Space. Untuk melakukannya, instal ekstensi [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) dan terhubung ke host `<space-subdomain>@ssh.hf.space` yang sama.

### Menyimpan perubahan

Perubahan yang Anda buat saat Dev Mode diaktifkan tidak disimpan secara otomatis ke repo Space. Secara default, perubahan tersebut akan dibuang saat Dev Mode dinonaktifkan atau saat Space masuk ke mode tidur.

Jika Anda ingin menyimpan perubahan yang dibuat saat Mode Dev diaktifkan, Anda perlu menggunakan `git` dari dalam kontainer Space (menggunakan VS Code atau SSH). Contoh:

```shell
# Add changes and commit them
git add .
git commit -m "Persist changes from Dev Mode"

# Push the commit to persist them in the repo
git push
```

Modal akan menampilkan peringatan jika Anda memiliki perubahan yang belum di-commit atau belum di-push di Space:

## Mengaktifkan Mode Dev

Anda dapat mengaktifkan Dev Mode pada Space Anda melalui antarmuka web atau melalui API.

### Melalui API

Anda dapat mengaktifkan/menonaktifkan Mode Dev secara programatik:

```
POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}

{
  "enabled": true
}
```

### Melalui antarmuka web

Anda juga dapat membuat Space dengan mode dev diaktifkan:

## Keterbatasan

Dev Mode saat ini tidak tersedia untuk Spaces statis. Spaces Docker juga memiliki beberapa persyaratan tambahan.

### Docker Spaces

Dev Mode didukung untuk Docker Spaces. Namun, Space Anda harus mematuhi aturan berikut agar Dev Mode berfungsi dengan baik.

1. Paket-paket berikut harus diinstal:

- `bash` (diperlukan untuk membangun koneksi SSH)
- `curl`, `wget` dan `procps` (diperlukan oleh proses server VS Code)
- `git` dan `git-lfs` untuk dapat melakukan commit dan push perubahan dari lingkungan Dev Mode Anda

2. Kode aplikasi Anda harus berada di folder `/app` agar daemon Dev Mode dapat mendeteksi perubahan.

3. Folder `/app` harus dimiliki oleh pengguna dengan uid `1000` agar Anda dapat membuat perubahan pada kode.

4. Dockerfile harus berisi instruksi `CMD` untuk startup. Lihat [dokumentasi Docker](https://docs.docker.com/reference/dockerfile/#cmd) tentang instruksi `CMD` untuk detail lebih lanjut.

Dev Mode berfungsi dengan baik ketika image dasar berbasis debian (misalnya, ubuntu).

Distro Linux yang lebih eksotis (misalnya, alpine) tidak diuji dan Dev Mode tidak dijamin berfungsi di atasnya.

### Contoh Dockerfile yang kompatibel

Ini adalah contoh Dockerfile yang kompatibel dengan Spaces Dev Mode.

Ini menginstal paket yang diperlukan dengan `apt-get`, beserta beberapa paket tambahan untuk kenyamanan pengembang (yaitu: `top`, `vim` dan `nano`). Kemudian, aplikasi NodeJS dimulai dari `/app`.

```Dockerfile
FROM node:19-slim

RUN apt-get update && \
    apt-get install -y \
      bash \
      git git-lfs \
      wget curl procps \
      htop vim nano && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY --link ./ /app
RUN  npm i 

RUN chown 1000 /app
USER 1000
CMD ["node", "index.js"]
```

Beberapa contoh Docker Spaces yang kompatibel dengan Dev Mode tersedia di organisasi ini. Silakan duplikat mereka di namespace Anda!

Contoh aplikasi Python (server HTTP FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python

Contoh aplikasi JavaScript (server HTTP Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript

## Umpan Balik

Anda dapat membagikan umpan balik Anda tentang Spaces Dev Mode langsung di HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions

