178 lines
3.1 KiB
Markdown
178 lines
3.1 KiB
Markdown
# Synology Deployment Guide (ManeshTrader Web)
|
|
|
|
This guide documents the exact deployment flow that worked for this project on Synology NAS.
|
|
|
|
## App Location
|
|
|
|
This project runs from:
|
|
|
|
- NAS folder: `/volume1/docker/maneshtrader`
|
|
- Container port: `8501`
|
|
- URL: `http://<NAS_IP>:8501`
|
|
|
|
## Prerequisites (One-Time)
|
|
|
|
On Synology DSM:
|
|
|
|
1. Install `Container Manager` from Package Center.
|
|
2. Enable SSH:
|
|
- `Control Panel -> Terminal & SNMP -> Enable SSH service`
|
|
3. Ensure your user can run Docker:
|
|
- Add user to `administrators` group.
|
|
- Grant `Container Manager` app permission for that user.
|
|
|
|
Notes:
|
|
|
|
- Store data only in shared folders (use `/volume1/...` paths).
|
|
- If Docker commands fail with socket permission errors, use `sudo -i` (see Troubleshooting).
|
|
|
|
## Required Files in `web/src`
|
|
|
|
These files must exist (already added in this repo):
|
|
|
|
- `Dockerfile`
|
|
- `docker-compose.yml`
|
|
- `app.py`
|
|
- `requirements.txt`
|
|
- `web_core/`
|
|
|
|
## Initial Deploy
|
|
|
|
Run from your Mac (repo root), using your SSH port `25`:
|
|
|
|
```bash
|
|
rsync -avz --delete -e "ssh -p 25" \
|
|
--exclude ".pytest_cache" --exclude "__pycache__" \
|
|
web/src/ mbrucedogs@192.168.1.128:/volume1/docker/maneshtrader/
|
|
```
|
|
|
|
Then SSH to Synology:
|
|
|
|
```bash
|
|
ssh -p 25 mbrucedogs@192.168.1.128
|
|
```
|
|
|
|
Start the container:
|
|
|
|
```sh
|
|
sudo -i
|
|
cd /volume1/docker/maneshtrader
|
|
mkdir -p data
|
|
docker compose up -d --build
|
|
```
|
|
|
|
If your DSM uses legacy compose command:
|
|
|
|
```sh
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
## Verify It Is Running
|
|
|
|
```sh
|
|
sudo -i
|
|
docker ps --filter name=maneshtrader
|
|
docker logs --tail 100 maneshtrader
|
|
```
|
|
|
|
Open in browser:
|
|
|
|
- `http://192.168.1.128:8501`
|
|
|
|
## Update Workflow (After Code Changes)
|
|
|
|
You do **not** need to redo full setup. Just:
|
|
|
|
1. Sync updated source.
|
|
2. Rebuild/restart compose service.
|
|
|
|
From Mac:
|
|
|
|
```bash
|
|
rsync -avz --delete -e "ssh -p 25" \
|
|
web/src/ mbrucedogs@192.168.1.128:/volume1/docker/maneshtrader/
|
|
```
|
|
|
|
On Synology:
|
|
|
|
```sh
|
|
sudo -i
|
|
cd /volume1/docker/maneshtrader
|
|
docker compose up -d --build
|
|
```
|
|
|
|
## Useful Operations
|
|
|
|
Restart app:
|
|
|
|
```sh
|
|
sudo -i
|
|
cd /volume1/docker/maneshtrader
|
|
docker compose restart
|
|
```
|
|
|
|
Stop app:
|
|
|
|
```sh
|
|
sudo -i
|
|
cd /volume1/docker/maneshtrader
|
|
docker compose down
|
|
```
|
|
|
|
Follow logs live:
|
|
|
|
```sh
|
|
sudo -i
|
|
docker logs -f maneshtrader
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Error: `permission denied while trying to connect to the Docker daemon socket`
|
|
|
|
Cause:
|
|
|
|
- SSH user does not have Docker daemon access.
|
|
|
|
Fix:
|
|
|
|
1. Run commands as root shell:
|
|
|
|
```sh
|
|
sudo -i
|
|
```
|
|
|
|
2. If `sudo` is unavailable, in DSM:
|
|
- Add user to `administrators`.
|
|
- Allow `Container Manager` permission.
|
|
- Reconnect SSH.
|
|
|
|
Do **not** run insecure socket permission changes like:
|
|
|
|
```sh
|
|
chmod 666 /var/run/docker.sock
|
|
```
|
|
|
|
### `docker compose` not found
|
|
|
|
Try legacy command:
|
|
|
|
```sh
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
Or extend PATH:
|
|
|
|
```sh
|
|
export PATH=$PATH:/usr/local/bin:/var/packages/ContainerManager/target/usr/bin
|
|
```
|
|
|
|
## Optional: One-Liner Update From Mac
|
|
|
|
```bash
|
|
rsync -avz --delete -e "ssh -p 25" \
|
|
web/src/ mbrucedogs@192.168.1.128:/volume1/docker/maneshtrader/ && \
|
|
ssh -p 25 mbrucedogs@192.168.1.128 \
|
|
"sudo -i sh -lc 'cd /volume1/docker/maneshtrader && docker compose up -d --build'"
|
|
```
|