SOPlanning, simple online planning (people, projects, tasks, resources). Open source, GPL v3.
172
SOPlanning is a simple online planning tool to schedule people, projects, tasks, places and resources, with a web interface and Android / iPhone apps. Open source (GPL v3).
This image contains the SOPlanning web application (PHP 8.3 + Apache). The database runs in a separate MariaDB container; both are started together with Docker Compose.
docker-compose.yml and .env (from .env.example)..env.docker compose up -d
http://<your-server>:8080 and log in with admin / admin (or the ADMIN_PASSWORD
you set). Change this password right away.On first start the database is created automatically. On each start, the database is upgraded automatically if the image is newer.
x-soplanning-env: &soplanning-env
SOPLANNING_DB_HOST: db
SOPLANNING_DB_NAME: soplanning
SOPLANNING_DB_USER: soplanning
SOPLANNING_DB_PASSWORD: ${DB_PASSWORD:?set DB_PASSWORD in .env}
services:
app:
image: soplanning/soplanning:${SOPLANNING_TAG:-latest}
restart: unless-stopped
environment:
<<: *soplanning-env
SOPLANNING_URL: ${SOPLANNING_URL:-http://localhost:8080}
SOPLANNING_ADMIN_PASSWORD: ${ADMIN_PASSWORD:-}
SOPLANNING_LANG: ${SOPLANNING_LANG:-fr}
SOPLANNING_LICENSE: ${SOPLANNING_LICENSE:-}
SOPLANNING_TRUSTED_PROXIES: ${SOPLANNING_TRUSTED_PROXIES:-}
ports:
- "${HTTP_PORT:-8080}:80"
volumes:
- uploads:/var/www/soplanning/www/upload
depends_on:
db:
condition: service_healthy
cron:
image: soplanning/soplanning:${SOPLANNING_TAG:-latest}
restart: unless-stopped
command: ["cron"]
environment:
<<: *soplanning-env
depends_on:
app:
condition: service_started
db:
image: mariadb:11.4
restart: unless-stopped
command:
- --character-set-server=latin1
- --collation-server=latin1_general_ci
- --sql-mode=NO_ENGINE_SUBSTITUTION
environment:
MARIADB_DATABASE: soplanning
MARIADB_USER: soplanning
MARIADB_PASSWORD: ${DB_PASSWORD}
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:?set DB_ROOT_PASSWORD in .env}
volumes:
- dbdata:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 30
volumes:
uploads:
dbdata:
DB_PASSWORD=change-me
DB_ROOT_PASSWORD=change-me-too
# Admin password set at first installation (empty = admin)
ADMIN_PASSWORD=
# Public URL of your instance (e-mail links, iCal, mobile app)
SOPLANNING_URL=http://localhost:8080
HTTP_PORT=8080
# Image version: latest or a fixed version (e.g. 1.57.01)
SOPLANNING_TAG=latest
# Language of the initial data: fr, en, de, es, it, nl, pt, da, hu, pl, br, id, sl
SOPLANNING_LANG=en
# Domain name for automatic HTTPS (see below)
SOPLANNING_DOMAIN=
# Mobile app licence (token provided by SOADVANCE, on one line)
SOPLANNING_LICENSE=
# Reverse proxies with a public IP in front of SOPlanning (IPs or CIDR, comma separated)
SOPLANNING_TRUSTED_PROXIES=
Automatic (Let's Encrypt): set SOPLANNING_DOMAIN in .env (the domain must point to your
server, ports 80 and 443 open), add this docker-compose.https.yml, then start with
docker compose -f docker-compose.yml -f docker-compose.https.yml up -d.
The certificate is obtained and renewed automatically.
services:
app:
ports: !reset []
environment:
SOPLANNING_URL: https://${SOPLANNING_DOMAIN:?set SOPLANNING_DOMAIN in .env}
caddy:
image: caddy:2
restart: unless-stopped
command: ["caddy", "reverse-proxy", "--from", "${SOPLANNING_DOMAIN}", "--to", "app:80"]
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- caddy_data:/data
- caddy_config:/config
depends_on:
- app
volumes:
caddy_data:
caddy_config:
Existing reverse proxy (Synology, Nginx Proxy Manager, Traefik...): point it to port 8080
and set SOPLANNING_URL=https://.... Proxies on private networks are trusted automatically
for the client IP; declare proxies with a public IP in SOPLANNING_TRUSTED_PROXIES.
The SOPlanning Android and iPhone apps work with a self-hosted instance under two conditions:
HTTPS with a valid certificate, and a mobile app licence from SOADVANCE
(https://www.soplanning.org). Paste the licence token in SOPLANNING_LICENSE in .env, then run
docker compose up -d.
docker compose pull
docker compose up -d
The database is upgraded automatically when the new version starts. Make a backup first.
# database
docker compose exec db sh -c 'mariadb-dump -uroot -p"$MARIADB_ROOT_PASSWORD" soplanning' > soplanning.sql
# attached files, logo, backups
docker compose cp app:/var/www/soplanning/www/upload ./upload-backup
# restore the database
docker compose exec -T db sh -c 'mariadb -uroot -p"$MARIADB_ROOT_PASSWORD" soplanning' < soplanning.sql
# restore the files, then restart (gives the files back to the web server user)
docker compose cp ./upload-backup/. app:/var/www/soplanning/www/upload
docker compose restart app
X.YY.ZZ (e.g. 1.57.01): fixed versionlatest: latest released versionArchitectures: linux/amd64, linux/arm64.
SOPlanning is free software released under the GNU General Public License v3.
Content type
Image
Digest
sha256:5b634ace7…
Size
199.8 MB
Last updated
11 days ago
docker pull soplanning/soplanning