Skip to content

Server Directory Structure

This reference describes the file system layout on an Appliku-managed server. Understanding this structure is helpful when debugging, running manual commands, or inspecting application state via SSH.

Overview

All Appliku-managed files live under the /home/app/ directory, owned by the app user.

/home/app/
├── {app-name}/                    # One directory per application
│   ├── docker-compose.yml         # Generated Docker Compose file
│   ├── code/                      # Application source code
│   └── env/                       # Environment variable exports
├── _cron_logs/                    # Cron job logs
│   ├── job_{job_id}.log           # Log of one cron job
│   └── runs/job_{job_id}/         # Output of each run (new cron runner)
├── nginx/                         # Nginx configuration
│   ├── conf.d/                    # Per-application Nginx configs
│   └── ssl/                       # SSL certificates
└── ...

Application Directories

/home/app/APP-NAME/

Each deployed application gets its own directory. The directory name matches the application's slug (lowercase, hyphenated).

/home/app/my-django-app/
├── docker-compose.yml     # Auto-generated; do not edit manually
├── code/                  # Your application source code
└── env/
    └── envs_export.sh     # Environment variables as shell exports

docker-compose.yml

This file is auto-generated by Appliku on each deployment. It defines: - Application service containers (web, worker, etc.) - Database containers - Volumes - Network configuration - Resource limits

Warning

Do not manually edit docker-compose.yml. Your changes will be overwritten on the next deployment. Use the Appliku dashboard or appliku.yml to configure your application.

code/

Contains your application's source code, pulled from your Git repository during deployment.

env/

Contains envs_export.sh, a shell script that exports your application's environment variables. This file is sourced during the Docker build to make environment variables available at build time.

The predefined Dockerfiles copy this directory into the image at build time. A restart rewrites the files on the server, but not the copy inside the image.

Docker Volumes

Persistent data (databases, uploaded files) is stored in Docker volumes. These survive container restarts and redeployments.

Default volume location:

/var/lib/docker/volumes/

To list volumes for an application:

docker volume ls | grep {app-name}

To inspect a volume's mount point:

docker volume inspect {volume-name}

Nginx Configuration

/home/app/nginx/conf.d/

Contains per-application Nginx configuration files. Each application with a web process gets its own .conf file that defines: - Server blocks for each domain - SSL certificate paths - Proxy pass rules to the application container - Static file serving rules (for volumes with url configured)

/home/app/nginx/ssl/

Contains SSL certificates and private keys provisioned by Let's Encrypt.

Note

Nginx configuration files are auto-generated. Use the Appliku dashboard to manage domains and SSL settings rather than editing these files directly.

Cron Job Logs

/home/app/_cron_logs/

Each cron job has a log file job_{job_id}.log in this directory:

  • With the old cron runner, the file has the output (stdout and stderr) of each run.
  • For cluster applications and on servers with the new cron runner, the file has only the start and end lines of each run, the result and the path of the run log. The output of each run is in its own file: runs/job_{job_id}/{run key}.log.

See Viewing Cron Job Logs. For a cluster application, the logs are on the cluster primary.

To view cron job output:

Note

On a server with the managed firewall (EC2 or DigitalOcean), allow your IP first (Firewall).

ssh app@<server-ip>
ls /home/app/_cron_logs/
# Find your job ID, then:
cat /home/app/_cron_logs/job_{job_id}.log
ls /home/app/_cron_logs/runs/job_{job_id}/

Useful Commands

When SSHed into the server as the app user:

# List all deployed applications
ls /home/app/

# View an application's Docker Compose config
cat /home/app/{app-name}/docker-compose.yml

# Check running containers
docker ps

# View logs for a specific container
docker logs {container-name} --tail 100

# Check disk usage by Docker
docker system df

# List Docker volumes
docker volume ls