3.2 KiB
3.2 KiB
Install and Operations Guide
This document describes how to install, configure, run, and operate Project Ploughshares locally and on an Ubuntu server.
1) Prerequisites
- Docker and Docker Compose plugin installed
- Git installed
- Ubuntu server (for systemd install) with sudo/root access
2) Environment Configuration
- Copy the example env file and set secrets/values:
cp .env.example .env
- Edit
.env
and setGOOGLE_API_KEY
and any optional overrides (APP_ENV, DB vars, etc.)
3) Local Development
- Start the dev stack:
docker-compose -f docker-compose.dev.yml up --build
- Access the app:
http://localhost:5005
- Run crawlers (provide GOOGLE_API_KEY in
.env
):- Google Alerts:
docker-compose -f docker-compose.dev.yml run --rm crawler_google_alerts
- Marketline:
docker-compose -f docker-compose.dev.yml run --rm crawler_marketline
- Google Alerts:
4) Server Install (Ubuntu + systemd)
The repo includes a non-interactive installer that deploys to /opt/ploughshares
, installs systemd unit/timer, and starts services.
Steps:
- Ensure Docker + Compose are installed on the server
- Copy the repo to the server (or clone) and run:
sudo ./install.sh
- The installer will:
- Sync repo to
/opt/ploughshares
- Ensure
/opt/ploughshares/.env
exists (from example if absent) - Install
ploughshares-compose.service
andploughshares-daily-restart.timer
- Enable and start both
- Sync repo to
Change daily restart time (default 03:15):
sudo systemctl edit ploughshares-daily-restart.timer
# In the [Timer] section set: OnCalendar=*-*-* HH:MM:SS
sudo systemctl daemon-reload
sudo systemctl restart ploughshares-daily-restart.timer
5) Operations
- Check status:
systemctl status ploughshares-compose.service
systemctl status ploughshares-daily-restart.timer
- Start/Stop/Restart stack:
sudo systemctl start|stop|restart ploughshares-compose.service
- Logs:
- App containers:
docker logs <container_name>
- Daily restart logs:
/var/log/ploughshares-restart.log
- Manual restart with logging:
./restart_containers.sh
- App containers:
6) Cron alternative (optional)
If you prefer cron instead of systemd timer, use the helper:
INTERVAL="15 3 * * *" ./install_daily_restart_cron.sh
7) CI/CD
- Woodpecker builds the app and crawler images per
.woodpecker.yml
8) Troubleshooting
- Containers not starting:
docker-compose -f docker-compose.yml up -d
(server) ordocker-compose -f docker-compose.dev.yml up -d
(local)docker compose ps
/docker compose logs -f app
- Missing GOOGLE_API_KEY:
- Set in
.env
and re-run
- Set in
- Systemd unit not found:
sudo systemctl daemon-reload
- Permission issues writing logs:
- Ensure
/var/log
is writable by root; logs written by systemd service
- Ensure
9) Uninstall
sudo systemctl disable --now ploughshares-daily-restart.timer
sudo systemctl disable --now ploughshares-compose.service
sudo rm -f /etc/systemd/system/ploughshares-daily-restart.timer
sudo rm -f /etc/systemd/system/ploughshares-daily-restart.service
sudo rm -f /etc/systemd/system/ploughshares-compose.service
sudo systemctl daemon-reload
# Preserve data if needed:
sudo rm -rf /opt/ploughshares