Skip to main content
Install and run Zepeed using Docker Compose.

Requirements

Install the following on your system:
Verify installation:

Setup

1

Create the container

  1. In Proxmox, download the Debian 12 CT template.
  2. Create a new LXC container with:
    • RAM: 1024 MB (2048 recommended)
    • Disk: 8 GB
    • Nesting: enabled (required for Docker)
    • Uncheck Unprivileged container — Docker needs a privileged LXC.
  3. Start the container and open its shell.
2

Install Docker inside the LXC

Continue with Common setup below.
1

Create a working directory

2

Download the Compose file and env template

3

Configure your environment

Open the .env file in your editor:
Minimum required values:Generate APP_KEY:
Paste the output (starts with base64:) into APP_KEY=.
4

Pull and start

Docker pulls all images, runs database migrations automatically, and starts the application. First boot takes ~60 seconds.
5

Default admin account

A default admin account is created automatically on first boot using the credentials in .env:
Change DEFAULT_ADMIN_PASSWORD in .env before starting the stack. After login, update your credentials under Profile Settings.
On every subsequent restart, the account creation step is skipped automatically.
6

Open in browser

Navigate to https://your-domain.com. Let’s Encrypt issues a certificate automatically on first request (takes ~10 seconds).
7

Clone repository

Clone the Zepeed repository to your local machine.
8

Create environment configuration

Copy the example environment file for your target environment. For development:
For production:
The environment file contains configuration for the application, database, cache, mail, and external services.
9

Configure environment variables

Edit the .env file to match your deployment requirements. At minimum, set:
In production, never commit .env to version control. Use secrets management tools (Kubernetes Secrets, Docker Secrets, HashiCorp Vault) instead.
10

Start containers

Build and start all services in detached mode.
Docker Compose will:
  1. Build the Zepeed application image
  2. Pull MySQL, Redis, and Mailpit images
  3. Create containers and networks
  4. Start all services
11

Initialize database

Run database migrations and seed initial data.
If migrations fail with “No such table” errors, ensure the MySQL container is healthy before retrying. Check with docker compose ps.
12

Generate application key

If you haven’t set APP_KEY in your .env file, generate it now.
Update your .env file with the generated key and restart the application:
13

Create a user account

Open the Docker terminal for the app container and run the following command to create your initial user account:
Follow the interactive prompts to set the user details.
14

Verify installation

Open your browser and navigate to the application URL:
You should see the Zepeed login page. Log in with default credentials (if seeded) or create a new account via the application interface.Verify services are running:
Expected output shows all containers with status “Up”.

Essential commands

Troubleshooting

Container fails to start

Check logs for error messages:
Common issues:
  • Port already in use: Change port mapping in compose.yaml
  • Insufficient disk space: Clean up with docker system prune
  • Permission denied: Ensure Docker daemon is running and you have permissions

Database connection fails

Verify MySQL is running and healthy:
If MySQL fails to start, check data directory permissions:

Application errors after startup

Wait for MySQL to finish initialization. The first startup takes longer:
Then verify the app is running:

Reset to clean state