Quick reference for the most common operations:
# Start service
docker compose up -d
# View logs
docker compose logs -f
# Get .onion address
cat tor_data/hidden_service/hostname
# Check status
docker compose ps
# Stop service
docker compose downdocker compose up -dThis starts both containers in detached mode (background).
docker compose downThis stops and removes the containers. Note: This does NOT delete your .onion keys in tor_data/.
docker compose restartQuick restart of both containers without rebuilding.
docker compose up -d --buildUse this when you've modified:
Dockerfile.tororDockerfile.nginxtorrcornginx.confentrypoint-tor.sh
docker compose psShows running containers with their status and health.
# View all logs with live updates
docker compose logs -f
# View Tor logs only
docker compose logs -f tor
# View Nginx logs only
docker compose logs -f nginx
# View last 50 lines
docker compose logs --tail=50
# View logs since specific time
docker compose logs --since 30mcat tor_data/hidden_service/hostname# Enter Tor container
docker exec -it blockscout-tor sh
# Enter Nginx container
docker exec -it blockscout-nginx shUseful for debugging and inspecting the environment.
# Check Tor version
docker exec blockscout-tor tor --version
# Test nginx configuration
docker exec blockscout-nginx nginx -t
# View Tor configuration
docker exec blockscout-tor cat /etc/tor/torrc
# Check nginx configuration
docker exec blockscout-nginx cat /etc/nginx/nginx.conf# Pull latest Alpine images
docker compose pull
# Rebuild with new base images
docker compose up -d --buildSince we use Alpine's package manager, updates are applied during rebuild:
docker compose build --no-cache
docker compose up -d# Remove stopped containers
docker compose down
# Remove containers and volumes (WARNING: deletes .onion keys!)
docker compose down -v
# Remove unused images
docker image prune -a# Create backup
tar -czf hidden_service_backup_$(date +%Y%m%d).tar.gz tor_data/hidden_service/
# Create encrypted backup
tar -czf - tor_data/hidden_service/ | \
gpg -c > hidden_service_backup_$(date +%Y%m%d).tar.gz.gpgSee BACKUP.md for detailed backup procedures.
# From tar.gz
tar -xzf hidden_service_backup_20251030.tar.gz
# From encrypted backup
gpg -d hidden_service_backup_20251030.tar.gz.gpg | tar -xzf -
# Set correct permissions
chmod 700 tor_data/hidden_service
chmod 600 tor_data/hidden_service/*# Real-time resource usage
docker stats
# Specific container
docker stats blockscout-tor# View health status
docker inspect blockscout-tor | grep -A 10 Health
docker inspect blockscout-nginx | grep -A 10 Health# Watch bootstrap in real-time
docker compose logs -f tor | grep -i bootstrap# Export all logs to file
docker compose logs > logs_$(date +%Y%m%d_%H%M%S).txt
# Export specific container logs
docker compose logs tor > tor_logs_$(date +%Y%m%d).txt# View network details
docker network inspect blockscout-onion_tor-network- Set up log rotation to prevent disk fill
- Automate backups with cron (see BACKUP.md)
- Keep Docker and base images updated
- Monitor container health regularly