Here are my notes about deploying Scribble.rs to Digital Ocean.
Scribble.rs is an open-source, ad-free alternative to skribbl.io.
- Create Droplet
- Create Docker network
- Configure firewall
- Install and run Nginx Proxy Manager
- Run Scribble.rs
- Add Proxy Host in Nginx Proxy Manager
- Create DNS record
- Play!
- Log into your Digital Ocean account.
- Create a new Droplet.
- Choose an image: Marketplace > Docker 23.0.6 on Ubuntu 22.04
- Choose size: Shared CPU > Basic
- CPU options: Regular > $6/mo (1 GB RAM, 1 CPU, 25 GB SSD Disk, 1000 GB transfer)
- Choose authentication method: Password (you can choose SSH Key instead, but I'll be using Password in these notes)
- SSH to the Droplet
- Issue the following command on the droplet:
docker network create nginxproxyman
- Issue the following commands on the Droplet:
ufw allow 80 ufw allow 443 ufw allow 81
-
Issue the following commands on the Droplet:
mkdir /opt/nginxproxymanager cd /opt/nginxproxymanager mkdir ./databases touch ./databases/nginxproxy.db touch ./docker-compose.yml
-
Populate the
docker-compose.yml
with the YAML content shown below (which I copy/pasted from this Vultr.com article).nano ./docker-compose.yml
YAML content:
version: "3" services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: 'nginxproxymanager' restart: unless-stopped ports: - '80:80' - '443:443' - '81:81' environment: DB_SQLITE_FILE: "/data/database.sqlite" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt networks: default: external: name: nginxproxyman
-
Issue the following commands on the Droplet:
docker compose up -d docker ps
-
In a web browser, visit the IP address of the droplet (on port
81
; e.g.http://123.123.123.123:81
). The Nginx Proxy Manager login page will appear. -
Login using the username
[email protected]
and passwordchangeme
. -
When prompted, choose a new email address and password.
-
Leave the web page open for a later step (shown below).
- Issue the following command on the Droplet:
docker run --network nginxproxyman --name scribblers -d biosmarcel/scribble.rs
The
--network nginxproxyman
tells Docker you want it to connect this new container to the Docker network you created earlier.
- In Nginx Proxy Manager, create a new Proxy Host.
- Domain names: (Enter a domain whose DNS records you can edit; e.g.
example.com
) - Scheme:
http
- Forward hostname:
scribblers
- Forward port:
8080
- Enable "Cache assets", "Block exploits", and "Websocket support"
- SSL:
- Request a new SSL certificate
- Force SSL
- Enable "HTTP/2", "HSTS", and "HSTS subdomains"
- Domain names: (Enter a domain whose DNS records you can edit; e.g.
- Create the following
A
record on the DNS server associated with the domain name you entered above:- Record type:
A
- Host: (Enter some host at that domain; e.g.
draw
) - Answer: (Enter the IP address of the Droplet)
- TTL:
660
(or any other amount you want)
- Record type:
Now that everything is set up, you can play Scribble.rs by visiting the host you specified above; e.g. https://draw.example.com
.
- https://www.vultr.com/docs/how-to-install-nginx-proxy-manager-on-ubuntu-20-04-18428/
- https://github.com/scribble-rs/scribble.rs
- My Digital Ocean referral link is: https://m.do.co/c/39488d73c82a
- You get $200 of Digital Ocean credit to use within 60 days
- When you reach $25 in billings, Digital Ocean gives me $25
- You can visit Digital Ocean without using the referral link, here: https://www.digitalocean.com/
- Compatibility issues
- When set up this way, Scribble.rs seems to me to work in Safari on iOS, Brave on iOS, Firefox on Windows 10; but not Firefox Focus on iOS. Those are all the web browsers I have tested so far. I don't know whether the issues stem from this procedure or from Scribble.rs, itself.