Quick Start
Get your sync server running in minutes with Docker Compose.
Prerequisites
Section titled “Prerequisites”- Docker and Docker Compose installed
- A server or computer to host the sync service
- Create a
docker-compose.ymlfile:
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- Create a
.envfile in the same directory:
AUTH_TOKEN=your-super-secret-token-hereReplace your-super-secret-token-here with a secure random token (see below).
- Start the server:
docker-compose up -dThe server will be available at http://localhost:8080.
Generate a Secure Token
Section titled “Generate a Secure Token”Use this command to generate a secure authentication token:
openssl rand -base64 32Copy 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.
Configure Your Apps
Section titled “Configure Your Apps”Open Ascently on your iOS or Android device:
- Go to Settings
- Scroll to Sync Configuration
- Enter your Server URL:
http://your-server-ip:8080 - Enter your Auth Token: (the token from your
.envfile) - Tap Test Connection to verify it works
- Enable Auto Sync
- Tap Sync Now to perform your first sync
Repeat this on all your devices to keep them in sync.
Verify It’s Working
Section titled “Verify It’s Working”Check the server logs:
docker-compose logs -f ascently-syncYou 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=0Remote Access
Section titled “Remote Access”To access your server remotely:
Option 1: Port Forwarding
Section titled “Option 1: Port Forwarding”- Forward port 8080 on your router to your server
- Find your public IP address
- Use
http://your-public-ip:8080as the server URL
Option 2: Domain Name (Recommended)
Section titled “Option 2: Domain Name (Recommended)”- Get a domain name and point it to your server
- Set up a reverse proxy (nginx, Caddy, Traefik)
- Enable HTTPS with Let’s Encrypt
- Use
https://sync.yourdomain.comas 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; }}Updating
Section titled “Updating”Pull the latest image and restart:
docker-compose pulldocker-compose up -dYour data is stored in ./ascently-data and persists across updates.
Troubleshooting
Section titled “Troubleshooting”Connection Failed
Section titled “Connection Failed”- 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
Sync Errors
Section titled “Sync Errors”- 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
Data Location
Section titled “Data Location”All data is stored in ./ascently-data/:
ascently-data/├── ascently.json # Your climb data└── images/ # Problem imagesYou can back this up or move it to another server.
Next Steps
Section titled “Next Steps”- Read the API Reference for advanced usage
- Set up automated backups of your
ascently-datadirectory - Configure HTTPS for secure remote access
- Monitor server logs for sync activity