Skip to main 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 output logs
│ └── {job_id}/ # One directory per cron job
├── 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.

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/JOB_ID/

Each cron job writes its stdout and stderr output to log files in this directory.

To view cron job output:

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

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