Self-hosting
Run Sridu yourself
Sridu is a folder of files. You can open it on your own computer, run it for the whole house with Docker, or put it on the internet. Pick the way that suits you below. Each one is explained step by step, no prior knowledge needed.
Just want to play? Then you don’t need any of this. Open play.sridu.com in Chrome or Edge, it is already set up and free.
Already running Sridu? Admin page · Configurator · All settings
Choose your way
Which one is right for me?
- Just the files One computer with the cameras. Five minutes, no installation apart from a small helper program.
- Docker at home For every phone, tablet and board in the house or the club room. On a NAS (Synology, Unraid), a Raspberry Pi or a PC. About 15 minutes.
- Public server Your own Sridu on your own domain, for a club or friends everywhere. Needs Docker, a domain and https in front: a Cloudflare Tunnel at home or a reverse proxy on a rented server. One evening.
- Web space Cloudflare Pages, Netlify or GitHub Pages. Free and without a server of your own, but without admin page and online leaderboard.
Just the files
You play on the computer the cameras are plugged into. The browser needs a small web server for that: opening index.html by double-click does not work, the browser then refuses the cameras.
Windows
- Install Python from the Microsoft Store (search for “Python”, take the newest version). It is free and only needed as a small web server.
- Download Sridu (sridu-latest.zip) and unzip it: right-click the file, “Extract all”.
- Open a terminal in the folder: open the unzipped folder, right-click an empty spot, “Open in Terminal”.
- Start the web server with this command and leave the window open:
python -m http.server 8080
- Open
http://localhost:8080in Chrome or Edge. Done. To stop, close the terminal window.
macOS
- Download Sridu (sridu-latest.zip). Safari unzips it into your Downloads folder by itself.
- Open a terminal in the folder: in Finder, right-click the folder, Services, “New Terminal at Folder”.
- Start the web server with this command and leave the window open. If macOS offers to install the “command line developer tools”, agree and run the command again afterwards.
python3 -m http.server 8080
- Open
http://localhost:8080in Chrome or Edge. Done. To stop, press Ctrl+C in the terminal.
Linux
- Open a terminal and download and unzip Sridu:
mkdir -p ~/sridu && cd ~/sridu
wget https://sridu.com/wp-content/themes/sridu/assets/download/sridu-latest.zip
unzip -q sridu-latest.zip && rm sridu-latest.zip
- Start the web server and leave the terminal open:
python3 -m http.server 8080
- Open
http://localhost:8080in Chrome or Chromium. Done. To stop, press Ctrl+C.
Phones and tablets cannot run Sridu from files, because a browser only hands out the camera and the encryption for online games on https:// or on localhost. They have two easy ways instead. Open play.sridu.com: it is free, installs as an app and keeps working offline once it has loaded. Or let another device in the house host Sridu with Docker, such as a NAS, a Raspberry Pi or a PC, and open it from there.
Docker at home
Docker runs Sridu as a small server. Every device in your network can then open it, phones included, with an admin page, a lobby and a leaderboard. Because it runs on https, each device can also install Sridu as an app. The steps depend on where Docker runs.
For your home network only. In this setup every device shares the players: names, PINs, statistics and every game are kept in /data/players.json on the server, and anyone who can reach this Sridu can read and change that file without logging in. At home that is what you want. Never make this setup reachable from the internet, not with port forwarding, not through a tunnel and not on a rented server. For that, take the Public server tab: it keeps no player data on the server.
Synology
- Install Container Manager from the Package Center (DSM 7.2 or newer).
- Put Sridu on the NAS: in File Station open the shared folder
docker, upload sridu-latest.zip into it, right-click it, “Extract”, “Extract here”. Rename the new foldersridu-…tosridu. - Adjust two settings: open
docker-compose.ymlwith the Text Editor. Put the IP address of your NAS inSRIDU_HOSTS, for exampleSRIDU_HOSTS: "192.168.1.20". SetPUID: "1026"andPGID: "100". Save. - Create the project: Container Manager, Project, Create. Name
sridu, path/volume1/docker/sridu, source “Use existing docker-compose.yml”. Skip the web portal, then Done. The first build takes a few minutes. - Play: on the NAS itself nobody plays, so open
https://<NAS IP>:8443on the board computer and every other device.
Set up the admin page
- Open the admin page at
http://<NAS IP>:8090/admin/. It only opens from your home network, so use the IP address, not a domain name. - Enter the setup code. It looks like
ABCD-EFGH-JKLM. The easiest place to find it: the fileSETUP-CODE.txtin the folderserver/adminof your Sridu folder. It is also in the log of the containersridu-api: Container Manager, Container,sridu-api, Log. - Choose a password. From now on you log in with it. The setup code is no longer needed. What every tab does is explained in the admin page guide.
Unraid
- Install “Docker Compose Manager” from Apps (Community Applications). It brings the
docker composecommand. - Open the terminal (the
>_icon at the top right) and fetch Sridu into appdata:
mkdir -p /mnt/user/appdata && cd /mnt/user/appdata
wget https://sridu.com/wp-content/themes/sridu/assets/download/sridu-latest.zip
unzip -q sridu-latest.zip -d sridu && rm sridu-latest.zip
cd sridu
- Adjust two settings:
nano docker-compose.yml. Put the IP address of your server inSRIDU_HOSTS, for example"192.168.1.20". SetPUID: "99"andPGID: "100"(Unraid’s user nobody and group users). Save with Ctrl+O, Enter, Ctrl+X. - Start it. The first build takes a few minutes:
docker compose up -d --build
- Play: open
https://<server IP>:8443on the board computer and every other device.
Set up the admin page
- Open the admin page at
http://<server IP>:8090/admin/. It only opens from your home network, so use the IP address, not a domain name. - Enter the setup code. It looks like
ABCD-EFGH-JKLM. The easiest place to find it: the fileSETUP-CODE.txtin the folderserver/adminof your Sridu folder. It is also in the log of the containersridu-api: in the Docker tab clicksridu-api, Logs, or rundocker logs sridu-api. - Choose a password. From now on you log in with it. The setup code is no longer needed. What every tab does is explained in the admin page guide.
Linux / Raspberry Pi
- Install Docker if it is not there yet, then log out and in again:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
- Fetch Sridu:
mkdir -p ~ && cd ~
wget https://sridu.com/wp-content/themes/sridu/assets/download/sridu-latest.zip
unzip -q sridu-latest.zip -d sridu && rm sridu-latest.zip
cd sridu
- Adjust two settings:
nano docker-compose.yml. Put the IP address of the machine inSRIDU_HOSTS(hostname -Ishows it). SetPUIDandPGIDto whatidshows, usually 1000 and 1000. - Start it:
docker compose up -d --build
- Play:
http://localhost:8090on this machine,https://<IP>:8443on every other device.
Set up the admin page
- Open the admin page at
http://<IP>:8090/admin/. It only opens from your home network, so use the IP address, not a domain name. - Enter the setup code. It looks like
ABCD-EFGH-JKLM. The easiest place to find it: the fileSETUP-CODE.txtin the folderserver/adminof your Sridu folder. It is also in the log of the containersridu-api:docker logs sridu-api. - Choose a password. From now on you log in with it. The setup code is no longer needed. What every tab does is explained in the admin page guide.
Windows / Mac
- Install Docker Desktop from docker.com and start it.
- Download Sridu (sridu-latest.zip) and unzip it, for example into Documents.
- Adjust one setting: open
docker-compose.ymlin a text editor and put the IP address of this computer inSRIDU_HOSTS(Windows:ipconfig, Mac: System Settings, Network). PUID and PGID can stay as they are. - Start it: open a terminal in the folder (Windows: right-click, “Open in Terminal”; Mac: Services, “New Terminal at Folder”) and run:
docker compose up -d --build
- Play:
http://localhost:8090on this computer,https://<IP>:8443on every other device.
Set up the admin page
- Open the admin page at
http://localhost:8090/admin/. It only opens from your home network, so use the IP address, not a domain name. - Enter the setup code. It looks like
ABCD-EFGH-JKLM. The easiest place to find it: the fileSETUP-CODE.txtin the folderserver/adminof your Sridu folder. It is also in the log of the containersridu-api: Docker Desktop, Containers,sridu-api, Logs. - Choose a password. From now on you log in with it. The setup code is no longer needed. What every tab does is explained in the admin page guide.
The browser warns about the certificate the first time you open https://…:8443. That is expected: the certificate comes from your own server, not from an authority. Click “Advanced” and “Proceed”. Once per device is enough.
Public server
Your own Sridu on your own domain, for a club or friends everywhere. It runs in Docker on a machine that is always on, and something in front of it takes care of https. At home that is usually a Cloudflare Tunnel, on a rented server a reverse proxy.
What you need
- A machine that runs all the time with Docker: your NAS or a mini PC at home, or a rented server (VPS) from any hosting provider.
- A domain or subdomain you can set DNS records for, for example
darts.your-club.com. - https in front of Sridu: at home a Cloudflare Tunnel (the free plan is enough, and no port on your router is opened), on a rented server a reverse proxy such as Caddy, nginx or Traefik.
Step by step
- Put Sridu on the machine as in the Docker tab (on a rented server as under Linux), but do not start it yet.
- Open
deploy/public/docker-compose.ymland change these settings: your domain inSRIDU_DOMAIN,SRIDU_LOBBY_GUESTS: "off"(unless you want to be an open lobby for everybody),SRIDU_BUG_INBOX: "off",SRIDU_CF_ANALYTICS: "off"(unless you switch on Cloudflare Web Analytics yourself) andPUID/PGIDas for your system.
Then continue for where it runs:
At home: Cloudflare Tunnel
- Create the project from the folder
deploy/public(Synology: path/volume1/docker/sridu/deploy/public; terminal:cd deploy/public && docker compose up -d --build). - Create the tunnel: move your domain to Cloudflare (the free plan is enough), then in Zero Trust under Networks, Tunnels create a tunnel and run its
cloudflaredon the NAS, as Cloudflare shows you. - Connect the domain: in the tunnel add a public hostname. Subdomain and domain as in
SRIDU_DOMAIN, typeHTTP, URL<NAS IP>:8110. - Test it: your domain should now show Sridu.
- Open the admin page on a computer in your home network at
http://<NAS IP>:8110/admin/, with the IP address of the NAS, not the domain.
Rented server: reverse proxy
- Keep the port private: in
docker-compose.ymlchange the port ofwebfrom"8110:8080"to"127.0.0.1:8110:8080". Then only the proxy on the same server reaches Sridu, not the internet. - Start it:
cd deploy/public && docker compose up -d --build. - Point the domain at the server: an A record (and AAAA for IPv6) with the server’s IP address at your DNS provider.
- Set up the proxy. With Caddy two lines in the
Caddyfileare enough, and Caddy fetches the certificate by itself:darts.your-club.comand below itreverse_proxy 127.0.0.1:8110. With nginx, Traefik or Nginx Proxy Manager forward to127.0.0.1:8110with WebSockets switched on and the headersX-Forwarded-ForandX-Forwarded-Proto. - Test it: your domain should now show Sridu.
- Open the admin page through an SSH tunnel. On your own computer run
ssh -L 8110:127.0.0.1:8110 you@your-serverand leave it open, then openhttp://localhost:8110/admin/in the browser. For Sridu you are then on the server itself, so the page opens.
Set up the admin page
The admin page never opens through your domain. your-domain/admin shows nothing, on purpose: nobody on the internet should even see the login. Open it as described in your tab above, from your home network or through an SSH tunnel. If you really want it through the domain, set SRIDU_ADMIN_REMOTE: "on" and choose a long password. An access check in front, such as Cloudflare Access, is safer still.
- Enter the setup code. It looks like
ABCD-EFGH-JKLM. The easiest place to find it: the fileSETUP-CODE.txtin the folderdeploy/public/dataof your Sridu folder. It is also in the log of the containersridu-public-api-1(Synology: Container Manager, Container, Log; terminal:docker logs sridu-public-api-1). - Choose a password. From now on you log in with it. The setup code is no longer needed. What every tab does is explained in the admin page guide.
Hosting for other people in Germany or the EU? Then you need an imprint and a privacy policy. Enter both on the admin page under “Legal”, the app links to them at the bottom of its start page.
Online matches do not connect in some networks (optional relay)
Mobile data and some routers do not allow direct connections between two boards. A relay (TURN) passes the encrypted traffic on. A Cloudflare Tunnel does not carry it, so it needs open ports: UDP 3478, UDP 31000–31040 and TCP 3478, at home forwarded on your router to the NAS, on a rented server allowed in its firewall. The steps are in the comments of the relay service in docker-compose.yml. Start it with docker compose --profile relay up -d.
Web space
Sridu needs no server of its own, so any web space that serves files will do. It is free and quick. What you do without: the admin page, your own lobby (players meet over public servers instead) and the online leaderboard. Name, colours, game modes and start settings still work, with the configurator.
Cloudflare Pages
- Download Sridu (sridu-latest.zip) and keep it zipped.
- In the Cloudflare dashboard: Workers & Pages, Create, Pages, “Upload assets”.
- Give it a name and drag the ZIP file itself into the upload field. Deploy. The unzipped folder won’t work: with its voice files it holds about 1,000 files, more than the dashboard accepts in one upload.
- Done: Sridu runs at
<name>.pages.dev. Under Custom domains you can add your own domain.
Netlify
- Download and unzip Sridu (sridu-latest.zip).
- Open
app.netlify.com/dropand drag the unzipped folder onto the page. - Done: Netlify shows the address. Sign up (free) if you want to keep the site.
GitHub Pages
- Create a new, empty repository on GitHub.
- Put Sridu into it from a terminal. The upload in the browser takes only 100 files at a time, and Sridu has about 1,000:
git clone https://github.com/<name>/<repository>.git, thencd <repository>, download sridu-latest.zip into it,unzip -q sridu-latest.zip && rm sridu-latest.zip,git add -A,git commit -m "Sridu",git push. - Switch on Pages: Settings, Pages, source “Deploy from a branch”, branch
main, folder/ (root). - Done: after a minute Sridu runs at
<name>.github.io/<repository>.
Your settings without Docker: the configurator
A copy on web space has no admin page, but it can still carry your club’s name and colours, a welcome, an announcement, a choice of game modes and start settings for new devices. The app reads them from a file called config.json next to index.html. The configurator in the app folder writes that file for you.
- Open config.html It comes with Sridu, next to
index.html. After uploading, openhttps://<your address>/config.html. If aconfig.jsonis already there, its values are loaded. - Go through the sections General, Look & welcome, Customise the app, Online and Legal. Whatever you leave alone keeps its default. Your changes are kept in this browser until you download them.
- Download config.json The button is at the top right. The file is made in your browser, nothing is sent anywhere.
- Put it next to index.html Upload the folder again and reload the app. Devices that already know it pick up the change at their next start.
| Where | How the file gets there |
|---|---|
| Cloudflare Pages | Unzip Sridu, put config.json next to index.html, select everything inside the folder and compress it into a new ZIP (the files, not the folder around them). Upload that ZIP in the dashboard with “Create deployment”. With wrangler pages deploy, put it into the folder instead. |
| Web space (FTP) | Upload it with your FTP program into the same folder as index.html. |
| NAS web station | Copy it into the folder of the web station next to index.html (Synology: the shared folder web, QNAP: Web), with File Station or over the network. |
| Your own computer | Next to index.html in the folder you serve, for example with python3 -m http.server. |
- LogoA file next to
index.html, such aslogo.png, an https address, or a small image of up to 100 KB that goes straight intoconfig.json. - LobbyWithout a server of your own, players meet serverless over public brokers, or in the Sridu online lobby at play.sridu.com.
- Imprint and privacy policyA link to a page on your website, or the text itself in
config.json. - No file at allIs fine too. The app then behaves as it always did.
What needs Docker: a shared leaderboard, player data on the server, your own lobby with moderation and your own broker, the usage figures, and the admin page with password, logo upload and backup. For those, take Docker at home or a public server.
Running your server
After the installation
Everything you need later on, for Docker at home and the public server.
I missed the setup code
Open the file SETUP-CODE.txt in the server’s data folder: Docker at home server/admin/, public server deploy/public/data/. It stays there until a password is set. No file there? Then the admin service has not started yet: look at the log of the project for an error, or restart it.
I forgot the admin password
Delete the file admin.json in the server’s data folder and restart the project. A new setup code appears in the log, and you choose a new password. Settings, leaderboard and texts are kept.
Where the folder is: Docker at home server/admin/, public server deploy/public/data/.
Where is my data, and how do I back it up?
Everything lives in plain folders next to docker-compose.yml. Docker at home: data/ (the player data of every browser) and server/ (admin, leaderboard, certificate). Public server: deploy/public/data/. To back up, copy these folders, or add them to your backup tool (Hyper Backup, Unraid appdata backup).
Moving to another server
Stop the project, copy the whole Sridu folder including the data folders to the new machine, adjust the IP address in SRIDU_HOSTS if it changed, and create the project there. Everything is back: players, leaderboard, password.
Changing a setting
Open docker-compose.yml, change the value, save, and restart the project (Synology: Project, Action, Restart; terminal: docker compose up -d). Many settings can also be changed on the admin page, no restart needed.
Updating to a new version
What a new version brings is in the changelog. The easiest way is the Update tab of the admin page: it builds the new version while the old one keeps running, then swaps the containers. Players notice a break of a few seconds at most.
- Rebuild, always there: download sridu-latest.zip, unzip it over your folder and keep your
docker-compose.ymland the data folders. Then press Rebuild on the admin page. - Download and update, if you switch it on: in
docker-compose.yml, under the serviceupdater, setSRIDU_UPDATE_DOWNLOADto"on", then rundocker compose up -donce. From then on the admin page shows when a new version is out and installs it with one click. Your compose files, settings and data stay as they are, and Back to the previous version restores the old files. - Without the updater: unzip as above, then rebuild by hand (Synology: Project, Action, Build; terminal:
docker compose up -d --build). An older installation gets the updater the same way once: the Update tab shows the lines to add todocker-compose.yml.
New settings of a release are in the docker-compose.yml inside the ZIP. Copy over the ones you want.
The port is already in use
Another program already uses 8090, 8443 or 8110. In docker-compose.yml under ports, change the number on the left, for example "8091:8080", and use the new number in the address.
Why PUID and PGID?
They decide which user owns the data folders. With your own user you can open, copy and back them up without permission trouble. Synology: 1026 and 100. Unraid: 99 and 100. Other Linux: what id shows. Docker Desktop on Windows and Mac: any value works.
Reference
Every setting
All settings are at the top of docker-compose.yml. Change the value, then restart the project. Many of them can also be set on the admin page, which then takes precedence. The two columns show the default of Docker at home and of the public server.
Server
| Setting | Home | Public | What it does |
|---|---|---|---|
SRIDU_HOSTS | empty | empty | IP addresses or names of the machine for the https certificate, comma separated. Set it before the first start. |
SRIDU_DOMAIN | n/a | your domain | Only this name and local addresses are answered. |
SRIDU_ADMIN_REMOTE | n/a | off | on = the admin page also opens through your domain, from anywhere. Only with a long password; an SSH tunnel is safer. |
SRIDU_LANG | auto | auto | The language everyone starts in: auto (the browser’s) or en, de, nl, fr, es, it, pt-BR, pl, hr. |
SRIDU_INDEX | n/a | on | on: search engines may list the app. |
SRIDU_ADMIN_REMOTE | n/a | off | on: the admin page also from outside your home network. Not recommended. |
SRIDU_CF_ANALYTICS | off | off | on: lets the script of Cloudflare Web Analytics load (security policy). Only if you switched on Web Analytics for your domain in Cloudflare; then name it in your privacy policy. |
SRIDU_NAME | empty | empty | Name of the installation in the browser tab and on the start page, for example DC Bullseye. Empty: Sridu. Logo, welcome text and more are on the admin page under Look & welcome. |
SRIDU_ACCENT | empty | empty | Accent colour as #rrggbb, for example #e11d48. Empty: the Sridu green. |
SRIDU_COUNTERS | on | on | Usage figures for the overview of the admin page: app starts, finished matches, darts and game modes per day. Sums only, no cookies, device IDs, names or addresses. |
SRIDU_PACKS | on | off | The sound-pack library: the apps of this server can share their own sounds and caller voices here and install each other’s. off: nothing is stored on the server and the app shows no library. Who may share and the biggest pack are set on the admin page under Sound packs. |
SRIDU_UPDATE_CHECK | on | on | Every six hours, and when you open the admin page, the server asks sridu.com whether a newer version is out, and the admin page then shows it (Update). A plain request without cookies or an ID; nothing is downloaded or installed. off: no check. |
PUID / PGID | 1000 / 1000 | 1026 / 100 | The user and group the data folders belong to. |
Lobby
| Setting | Home | Public | What it does |
|---|---|---|---|
SRIDU_LOBBY | on | on | The open chat for finding opponents. |
SRIDU_LOBBY_MODE | local | local | local: the lobby of this server. online: the Sridu online lobby at play.sridu.com, together with everybody there (another server via SRIDU_LOBBY_ONLINE_URL). mesh: without a server, over the brokers. |
SRIDU_LOBBY_GUESTS | n/a | on | on: apps of other installations may join this lobby. play.sridu.com needs that; on your own server usually off. |
SRIDU_LOBBY_ROOMS | one | one | one: one room for everybody. lang: one room per app language. |
SRIDU_LOBBY_MAX | n/a | 2000 | At most this many players online at once. |
SRIDU_LOBBY_PER_IP | n/a | 30 | At most this many lobby connections from one IP address. An IPv6 address counts by its /64 block. |
SRIDU_CHAT_HISTORY | n/a | 50 | Chat lines kept in memory for newcomers. Never written to disk. |
SRIDU_REPORTS | on | on | on: players can report people and messages in the lobby, and you see the reports on the admin page. Not in the file; add the line to switch it off, or use the admin page. |
Playing and leaderboard
| Setting | Home | Public | What it does |
|---|---|---|---|
SRIDU_CORRECT_CHALLENGES | on | off | May players correct darts in the hourly challenges? Off on a public server: what the cameras saw counts. |
SRIDU_CORRECT_MINIS | on | off | The same for training and warm-up games, everything with records. Party games can always be corrected. |
SRIDU_JOIN_APPROVAL | off | on | on: a device from outside the host’s network asks before it joins a session. |
SRIDU_BOARD | on | on | The leaderboard of the hourly challenges. |
SRIDU_BOARD_STRICT | off | on | on: only darts the cameras saw count, no corrections, nothing typed in. |
SRIDU_BOARD_TRAINING | on | on | Training games count on the online leaderboard. off: their records stay on the device. |
SRIDU_BOARD_WARMUP | on | on | The same for the warm-up games. |
SRIDU_PROGRESS | off | on | on: player level, badges with notes in the game, daily goals and looks to unlock (Level & badges). |
SRIDU_PROGRESS_DAILY | on | on | The three daily goals, only with SRIDU_PROGRESS. |
SRIDU_PROGRESS_UNLOCKS | on | on | Looks to unlock, only with SRIDU_PROGRESS. |
SRIDU_BOARD_DAYS | 90 | 90 | Results are deleted after this many days (at least 35). |
Problem reports
| Setting | Home | Public | What it does |
|---|---|---|---|
SRIDU_BUG_REPORTS | on | on | on: players can send a problem report straight to the Sridu developers (play.sridu.com). off: only by e-mail or saved as a file. |
SRIDU_BUG_INBOX | off | on | Receives the reports of every installation. Only for play.sridu.com; on your own server set it to off. |
SRIDU_BUG_DAYS | n/a | 90 | Received reports are deleted after this many days (7–365). |
Online matches
| Setting | Home | Public | What it does |
|---|---|---|---|
SRIDU_BROKER | on | on | The own broker connects devices for online matches. |
SRIDU_PUBLIC_BROKERS | on | off | on: public MQTT servers help as well when your own is not reachable. |
SRIDU_STUN | empty (Google and Cloudflare) | Cloudflare | Where a device learns its public address for a direct connection. |
SRIDU_TURN_HOST | empty | empty | Public name of your relay. Empty: no relay. |
SRIDU_TURN_PORT | 3478 | 3478 | Port of the relay. |
SRIDU_TURN_URLS | empty | empty | A hosted TURN service instead of your own relay. |
SRIDU_TURN_USER / _PASS | sridu / empty | sridu / empty | Login of the relay. Visible to every visitor, it only keeps strangers’ apps out. |
Compare
The four ways side by side
| Just the files | Docker at home | Public server | Web space | |
|---|---|---|---|---|
| Cameras, all game modes, statistics | Yes | Yes | Yes | Yes |
| Phones and tablets in the network | No | Yes | Yes | Yes |
| Online matches | Over public servers | Yes | Yes | Over public servers |
| Admin page | No | Yes | Yes | No, the configurator instead |
| Own lobby and leaderboard | No | Yes | Yes | No |
| Reachable from the internet | No | No | Yes | Yes |
| Effort | 5 minutes | 15 minutes | One evening | 10 minutes |
Licence: self-hosting is free for you at home and for your club. A pub, a public event or anything commercial needs a word first, see who may do what.