> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://kb.host4geeks.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# FTP/SFTP Access

# SFTP Access

Every Odoo instance comes with its own SFTP login so you can upload custom modules, edit `odoo.conf`, or download files from the filestore.

## Where to find your credentials

Open the instance's management page → scroll to the **SFTP Access** card.

![](https://storage.crisp.chat/users/helpdesk/website/-/3/b/7/6/3b7630273e7aca00/sftpcardpng_1bt0n3n.png)


You'll see four fields:

| Field | Example | What |
| ---- |
| Host | `203.0.113.42` | Your VM's public IP |
| Port | `2200` | A unique port per instance (each instance has its own) |
| Username | `odoo` | Always `odoo` (one user, dedicated to this instance) |
| Password | `kVyiSdtXY2AKj3Hc` (16-char random) | Click **Show** to reveal |

Plus a **Quick CLI** line you can copy-paste:

```
sftp -P 2200 odoo@203.0.113.42
```

## Connecting

### Command line

```bash
sftp -P 2200 odoo@203.0.113.42
# ...enter password
```

### FileZilla

1. File → Site Manager → New Site
2. **Protocol:** SFTP
3. **Host:** your VM's IP (from the panel)
4. **Port:** the port from the panel (e.g. 2200)
5. **Logon Type:** Normal
6. **User:** `odoo`
7. **Password:** the one from the panel
8. Connect

### Cyberduck (macOS)

1. Open Connection → SFTP
2. Server: your IP, Port: from the panel
3. Username: `odoo`, Password: from the panel
4. Connect

### VS Code (SFTP extension)

Use the [SFTP extension by Natizyskunk](https://marketplace.visualstudio.com/items?itemName=Natizyskunk.sftp).
Configure with the same host / port / username / password. Useful for in-place editing of `odoo.conf` or your custom modules.

## What you'll see after login

Your working directory after login is `/config`. Inside it, three folders matter:

| Folder | What's inside | What it maps to inside Odoo |
| ---- |
| `filestore/` | Files uploaded through Odoo (attachments, document content, etc.) | `/var/lib/odoo/` |
| `conf/` | `odoo.conf` — Odoo's configuration file | `/etc/odoo/` |
| `addons/` | Your custom Odoo modules | `/mnt/extra-addons/` |

The other folders you see (`.ssh`, `logs`, `ssh_host_keys`, `sshd`, `sshd.pid`) are the SFTP service's own files — leave them alone.

## Uploading a custom module

1. Build or get the module folder (a directory with a `__manifest__.py` file and Python files).
2. SFTP it into `addons/`. Final layout: `/config/addons/your_module_name/`.
3. Back in the panel, click **Restart Instance** on the Odoo instance page. (Odoo only scans for new modules at startup.)
4. Sign into Odoo's web UI → Apps → click "Update Apps List".
5. Search for your module and install it.

## Editing `odoo.conf`

```bash
sftp -P 2200 odoo@<host>
get conf/odoo.conf
# edit locally with your editor
put odoo.conf conf/odoo.conf
```

After saving, **Restart Instance** in the panel for changes to take effect.

## Changing the SFTP password

Two options on the instance page → SFTP Access card:

* **Set a New SFTP Password** — type your own (12+ chars), click **Update**.
* **Generate Random** — we make a fresh 16-char one. Click **Show** to copy it after the page reloads.

![](https://storage.crisp.chat/users/helpdesk/website/-/3/b/7/6/3b7630273e7aca00/sftpcardpng_7yliwp.png)

Either action restarts the SFTP service for ~5 seconds. Odoo itself keeps running — only the SFTP container restarts.

## Tips

* **Don't store secrets you can afford to lose** in the SFTP-only side. Anyone with your panel password can read it back.
* **Keep your custom modules in version control** locally. SFTP is a one-way street to the server — easy to overwrite by mistake.
* **The&#32;`filestore/`&#32;folder can get big** (every file uploaded through Odoo lives there). If your VM is running low on disk, that's the first place to look.
* **Don't&#32;`chmod 000`** anything inside the shared folders. Odoo itself needs to read/write them.
