# OrbitalBeat Content-addressable storage serving of blobs. ## Dependencies ### Go >= 1.18 ### Postgres >= 14 ## Usage via docker-compose ### Initial setup ```bash # Copy example environment file cp -v .env.example .env # Edit .env (use whatever editor you prefer) # TRUSTED_KEYS are public keys from FinalCommander instances # At least add a valid DATA_MOUNT_PATH and TRUSTED_KEYS, adjust LISTEN_PORT as desired. # Self-signed certificates will be generated if certificate entries are left empty. nano .env # Create/start postgres database docker-compose up -d db # Insert schema docker-compose exec -T --env PGPASSWORD=orbeat db psql --host db --username orbeat orbeat < schema.sql # Start everything else docker-compose up -d ``` ### Adding files to database ```bash # Add files to OrbitalBeat # This will scan all files under DATA_MOUNT_PATH ./scripts/add.sh # Add specific folder to OrbitalBeat ./scripts/add.sh /mnt/storage/folder/to/add ``` OrbitalBeat assumes that as long as a file exists in the database, it is immutable (contents did NOT change, besides deletion). Only existence of file and size are checked. **It is safe to delete files from backing storage.** Multiple hash duplicates can exist, and OrbitalBeat will check and return the first working one. Digest values are sent on each HTTP response, which a supporting client can use to verify the response. ### Update ```bash docker-compose up -d --build ``` ### Certbot notes * Use pip certbot * Edit .env to add paths to certificates ```bash $ certbot certonly \ --standalone \ --key-type=ecdsa --elliptic-curve=secp256r1 \ --domain \ --post-hook "docker restart orbitalbeat_orbeat_1" ```