Skip to content

Quick Start

Get your sync server running in minutes with Docker Compose.

  • Docker and Docker Compose installed
  • A server or computer to host the sync service
  1. Create a docker-compose.yml file:
version: '3.8'
services:
ascently-sync:
image: git.atri.dad/atridad/ascently-sync:latest
ports:
- "8080:8080"
environment:
- AUTH_TOKEN=${AUTH_TOKEN}
- DATA_FILE=/data/ascently.json
- IMAGES_DIR=/data/images
volumes:
- ./ascently-data:/data
restart: unless-stopped
  1. Create a .env file in the same directory:
AUTH_TOKEN=your-super-secret-token-here

Replace your-super-secret-token-here with a secure random token (see below).

  1. Start the server:
Terminal window
docker-compose up -d

The server will be available at http://localhost:8080.

Use this command to generate a secure authentication token:

Terminal window
openssl rand -base64 32

Copy the output and paste it into your .env file as the AUTH_TOKEN.

Keep this token secret and don’t commit it to version control.

Open Ascently on your iOS or Android device:

  1. Go to Settings
  2. Scroll to Sync Configuration
  3. Enter your Server URL: http://your-server-ip:8080
  4. Enter your Auth Token: (the token from your .env file)
  5. Tap Test Connection to verify it works
  6. Enable Auto Sync
  7. Tap Sync Now to perform your first sync

Repeat this on all your devices to keep them in sync.

Check the server logs:

Terminal window
docker-compose logs -f ascently-sync

You should see logs like:

Delta sync from 192.168.1.100: lastSyncTime=2024-01-15T10:00:00.000Z, gyms=1, problems=5, sessions=2, attempts=10, deletedItems=0

To access your server remotely:

  1. Forward port 8080 on your router to your server
  2. Find your public IP address
  3. Use http://your-public-ip:8080 as the server URL
  1. Get a domain name and point it to your server
  2. Set up a reverse proxy (nginx, Caddy, Traefik)
  3. Enable HTTPS with Let’s Encrypt
  4. Use https://sync.yourdomain.com as the server URL

Example nginx config with HTTPS:

server {
listen 443 ssl http2;
server_name sync.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/sync.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sync.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

Pull the latest image and restart:

Terminal window
docker-compose pull
docker-compose up -d

Your data is stored in ./ascently-data and persists across updates.

  • Check the server is running: docker-compose ps
  • Verify the auth token matches on server and client
  • Check firewall settings and port forwarding
  • Test locally first with http://localhost:8080
  • Check server logs: docker-compose logs ascently-sync
  • Verify your device has internet connection
  • Try disabling and re-enabling sync
  • Perform a manual sync from Settings

All data is stored in ./ascently-data/:

ascently-data/
├── ascently.json # Your climb data
└── images/ # Problem images

You can back this up or move it to another server.

  • Read the API Reference for advanced usage
  • Set up automated backups of your ascently-data directory
  • Configure HTTPS for secure remote access
  • Monitor server logs for sync activity