~10 minutes to your own cloud

Self-host Hoodik on any machine

Get your own end-to-end encrypted cloud storage running on a home server, a Raspberry Pi, a NAS, or any Linux box you already have. All you need is Docker, a domain, and 10 minutes.

What you'll need

  • A machine that runs Docker — a home server, a Raspberry Pi, a NAS, an old laptop. Hoodik idles at around 20 MB of RAM, so almost anything works. If you already have a server with a public IP, that works too.
  • A domain name — e.g. cloud.yourdomain.com. Needed for HTTPS certificates.
  • SSH access — a terminal to connect to your server.

Rather not run anything yourself? Hoodik Cloud runs your own instance for you — from 9 EUR/month, 14-day trial.

1

Point your domain to the server

Go to your domain registrar's DNS settings and create an A record pointing to your server's public IP address.

DNS Record
TypeNameValue
Acloudyour-server-ip

DNS propagation can take a few minutes. You can verify with: ping cloud.yourdomain.com

2

Install Docker

SSH into your server and install Docker with one command:

Terminal
curl -fsSL https://get.docker.com | sh
3

Install Caddy (reverse proxy)

Caddy automatically handles HTTPS certificates for you. No manual SSL setup needed.

Install Caddy (Ubuntu/Debian)
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Then configure Caddy to proxy traffic to Hoodik. Replace cloud.yourdomain.com with your actual domain:

/etc/caddy/Caddyfile
cloud.yourdomain.com {
    reverse_proxy localhost:5443 {
        transport http {
            tls_insecure_skip_verify
        }
    }
}
Restart Caddy
sudo systemctl restart caddy

Caddy will automatically obtain and renew a Let's Encrypt certificate for your domain. The tls_insecure_skip_verify is needed because Hoodik uses a self-signed cert internally.

4

Start Hoodik

Run Hoodik with Docker. Replace cloud.yourdomain.com with your domain:

Terminal
docker run --name hoodik -d \
  --restart unless-stopped \
  -e DATA_DIR='/data' \
  -e APP_URL='https://cloud.yourdomain.com' \
  -v /opt/hoodik/data:/data \
  -p 5443:5443 \
  hudik/hoodik:latest

Your data is stored in /opt/hoodik/data. Hoodik uses SQLite by default — no database setup required.

5

Create your account

Open https://cloud.yourdomain.com in your browser and register. The first user automatically becomes the admin.

During registration, a private key will be generated in your browser. This key encrypts all your files.

Store your private key somewhere safe (e.g. a password manager). If you ever forget your password, the private key is the only way to recover your account. Without it, your encrypted data is unrecoverable.

Connect the app

Download the Hoodik app, enter your server URL, and log in. Your files are encrypted on your device before they ever reach the server.

Tips

  • Backups: Your encrypted files and database live in /opt/hoodik/data. Back up this directory regularly.
  • Updates: Pull the latest image and restart — docker pull hudik/hoodik:latest && docker restart hoodik
  • Invite users: As admin, go to the Admin Dashboard to create invitation links for family or team members.
  • Storage: Hoodik idles at around 20 MB of RAM. Your storage limit is the size of your server's disk — or virtually unlimited with S3 storage.
☁️

Scale with S3 storage

Local disks fill up. Instead of buying bigger drives, connect Hoodik to any S3-compatible storage and get terabytes of encrypted storage for a fraction of the cost. Your machine still runs the server — the encrypted file chunks just live in the cloud. S3 only ever sees ciphertext.

Services like Backblaze B2 ($6/TB/mo), Wasabi ($7/TB/mo), or AWS S3 work out of the box. You can also self-host with MinIO.

Add to your docker run command
-e STORAGE_PROVIDER='s3' \
-e S3_BUCKET='my-hoodik-bucket' \
-e S3_REGION='us-east-1' \
-e S3_ACCESS_KEY='your-access-key' \
-e S3_SECRET_KEY='your-secret-key'

Already have local data? Run docker exec hoodik hoodik migrate-storage to move existing encrypted chunks to S3. The migration is idempotent — safe to re-run if interrupted.

Need help or have questions?

GitHub Open an issue on GitHub