/home/techb158/trello-import.abdallabala.com/deploy
Edit: /home/techb158/trello-import.abdallabala.com/deploy/VPS_DEPLOYMENT.md (3676B)
# VPS deployment guide
This Power-Up is a static site. On a VPS, the recommended setup is:
- Docker Compose runs the Power-Up on localhost port `8080`.
- Nginx on the host terminates HTTPS and proxies to the container.
- Trello Power-Up Admin points the iframe connector URL to `https://YOUR_DOMAIN/index.html`.
## Prerequisites
- A domain or subdomain pointed to your VPS, for example `trello-import.example.com`.
- Docker and Docker Compose installed.
- Nginx installed on the VPS.
- A Trello Power-Up API key from Trello Power-Up Admin.
## 1. Upload the project
From your local machine:
```bash
scp trello-import-powerup.zip root@YOUR_SERVER_IP:/opt/
ssh root@YOUR_SERVER_IP
cd /opt
unzip trello-import-powerup.zip
cd trello-import-powerup
```
## 2. Configure the Trello API key
```bash
cp .env.example .env
nano .env
```
Set:
```env
TRELLO_APP_KEY=your_real_trello_powerup_api_key
TRELLO_APP_NAME=Import JSON/CSV
TRELLO_APP_AUTHOR=Your Name or Company
TRELLO_APP_VERSION=1.0.0
```
## 3. Start the app container
```bash
docker compose up -d --build
curl http://127.0.0.1:8080/healthz
```
Expected output:
```text
ok
```
## 4. Configure Nginx on the host
```bash
cp deploy/nginx-site.conf /etc/nginx/sites-available/trello-import-powerup.conf
sed -i 's/DOMAIN_NAME/trello-import.example.com/g' /etc/nginx/sites-available/trello-import-powerup.conf
ln -s /etc/nginx/sites-available/trello-import-powerup.conf /etc/nginx/sites-enabled/trello-import-powerup.conf
nginx -t
```
Before enabling the HTTPS server block, you need a certificate. With Certbot, one common flow is:
```bash
apt update
apt install -y certbot python3-certbot-nginx
certbot --nginx -d trello-import.example.com
nginx -t
systemctl reload nginx
```
Then test:
```bash
curl -I https://trello-import.example.com/index.html
```
## 5. Update Trello Power-Up Admin
In Trello Power-Up Admin:
1. Set **Iframe connector URL** to:
```text
https://trello-import.example.com/index.html
```
2. Enable these capabilities:
```text
board-buttons
on-enable
show-settings
```
3. In the API Key tab, add this allowed origin:
```text
https://trello-import.example.com
```
4. Save, then enable the Power-Up on a test Trello board.
## 6. Smoke test
1. Open a Trello board where the Power-Up is enabled.
2. Click **Import JSON/CSV**.
3. Upload `samples/cards.csv` or `samples/cards.json`.
4. Preview the rows.
5. Import to a test list.
## Updating later
Upload the new zip, then:
```bash
cd /opt/trello-import-powerup
docker compose up -d --build
```
## Troubleshooting
### The Power-Up button does not show
Check that `board-buttons` is enabled in Power-Up Admin and that the board has the Power-Up enabled.
### The Power-Up iframe fails to load
Open this URL directly in a browser:
```text
https://trello-import.example.com/index.html
```
It should return the connector page without a certificate error.
### Authorization fails
Confirm that the exact origin is present in the Power-Up API Key tab:
```text
https://trello-import.example.com
```
Do not include `/index.html` in the allowed origin.
### Browser console shows frame blocking errors
Make sure your reverse proxy is not adding this header:
```text
X-Frame-Options: SAMEORIGIN
```
Trello needs to load the connector in an iframe.
## Alternative: Cloudflare Tunnel, no inbound ports
If you do not want to expose inbound `80` or `443`, do not use this Nginx/Certbot guide. Use the Cloudflare Tunnel guide instead:
```text
deploy/CLOUDFLARE_TUNNEL.md
```
That setup runs `cloudflared` in Docker and routes the public hostname to the private service `http://trello-import-powerup:80`.