A Docker Compose setup for running Structr with a pre-configured Neo4j database.
- Docker
- Docker Compose
This is the simplest way to get started. No configuration needed.
-
Start the containers:
docker compose up -d
-
Access Structr: Open http://127.0.0.1:8082/structr/ in your browser
-
Stop the containers:
docker compose down
Note: This uses Docker-managed volumes. Your data persists between restarts but is managed internally by Docker.
If you want to access Structr data directly on your host filesystem (useful for deployments and backups), you can use custom volume mounts.
-
Run the setup script:
./setup.sh
This creates local directories and sets proper permissions.
-
Add your license file:
- If you have a Structr license, copy it to
./structr/license.key - For community edition, the setup script creates an empty file for you
- If you have a Structr license, copy it to
-
Modify docker-compose.yml:
Replace the named volumes with bind mounts. Change the
volumessection for each service:For Neo4j:
volumes: - ./volumes/neo4j-database:/data - ./volumes/neo4j-logs:/logs
For Structr:
volumes: - ./volumes/structr-files:/var/lib/structr/files - ./volumes/structr-repository:/var/lib/structr/repository - ./volumes/structr-logs:/var/lib/structr/logs - ./structr/license.key:/var/lib/structr/license.key
-
Start the containers:
docker compose up -d
- Direct access to logs in
./volumes/structr-logs/and./volumes/neo4j-logs/ - Easy backup and restore of data
- Simplified deployment workflows (see below)
docker psdocker exec -it <container_id> /bin/shdocker compose logs # All logs
docker compose logs structr # Structr logs only
docker compose logs neo4j # Neo4j logs onlyWhen using custom volume directories, you can deploy Structr applications through the repository directory.
Important: Follow this order:
-
Clone your application repository to
./volumes/structr-repository -
Navigate to Structr's dashboard at http://localhost:8082/structr/#dashboard → Deployment
-
Import application:
- Enter
/var/lib/structr/repository/webappin the "Application import from server directory" field - Click import
- Enter
-
Export changes:
- After making changes in Structr
- Enter
/var/lib/structr/repository/webappin the "Application export to server directory" field - Click export
-
Commit and push:
- From the host system, commit your changes in
./volumes/structr-repository - Push to your repository
- From the host system, commit your changes in
-
Deploy updates:
- Pull the latest changes
- Repeat from step 3
-
Structr:
- Username:
admin - Password:
admin
- Username:
-
Neo4j:
- Username:
neo4j - Password:
structrDockerSetup
- Username:
You can adjust CPU and memory limits in docker-compose.yml under the deploy.resources section for each service.
Default limits:
- CPU: 2 cores limit, 1 core reserved
- Memory: 4GB limit, 1GB reserved
- Check if ports 8082, 7474, 7473, or 7687 are already in use
- View logs with
docker compose logs
- Run the setup script again:
./setup.sh - Ensure your user is in the
structrgroup (may require logout/login)
- Quick Start method: Data stored in Docker volumes, persists until you run
docker compose down -v - Advanced method: Data stored in
./volumes/directory on your host