Getting Started with Scribe-Server on Toolforge using Go
This guide provides a concise walkthrough for deploying a demo instance of the scribe-server (written in Go) on Toolforge. By setting up your own test server—similar to https://testserver-scribe.toolforge.org —you can validate your contributions in a live, Wikimedia-compatible environment.
Fork and Clone the Scribe Server Repository
Go to the official repo: Scribe-Server GitHub
Click Fork to add it to your GitHub account.
Clone your fork locally:
git clone https://github.com/<your-username>/Scribe-Server.git cd Scribe-ServerCreate a new branch to work on:
git checkout -b demo-toolforge-setup
Create a Toolforge Account
You’ll need to:
Create a Wikimedia developer account if you don’t have.
Request access to the Toolforge project
Membership approval usually takes about a day.
Follow the quickstart guide here: Toolforge Quickstart to login toolforge using ssh
If you successfully logged in you’ll see similar interface like this -

Create Tool account and use cmd like to switch the specific tool you want to deploy -
become testserver-scribe # for testing I use tool name as `testserver-scribe`
now we need to setup the environment first, for this we need to install git, Go
For go1.23.6 or higher setup we can use
wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz # Download Go
tar -xzf go1.23.6.linux-amd64.tar.gz -C ~/ # Extract the Tarball
mv ~/go ~/go1.23 # Rename the Directory &
moved it to ~/go1.23 for organization.
echo 'export GOROOT=$HOME/go1.23' >> ~/.bashrc # Persist the Variables
echo 'export PATH=$PATH:$GOROOT/bin' >> ~/.bashrc # Persist the Variables
source ~/.bashrc # Apply the changes
go version # Verify Installation
rm go1.23.6.linux-amd64.tar.gz # Clean Up tar file
If we ran go run . it’ll run 0.0.0.0:8000 only in toolforge environment.

Also, We can’t use go-sqlite3, as go-sqlite3 requires cgo to work. Also similarly we can’t use make command.
Therefore as there is no Golang in latest supported pre-built images, we are using different method.
🔁 Deploying or Re-deploying Your Scribe Server on Toolforge
Once our Tool is created and you've pushed your changes to Toolforge, follow these steps to build and launch your server:
🛑 1. Stop Any Running Service
toolforge webservice stop
This ensures that your previous service is cleanly shut down before starting a new one.
🏗️ 2. Compile the Go Application
cd ~/scribe-server
go build -o scribe-server
This builds your Go application and outputs the binary as
test-scribe-server.
📝 3. Create the Start Script (Only Once)
If you haven’t created it before, make a simple start script to launch the server:
cat > ~/scribe-server/start-script.sh << 'EOF'
#!/bin/bash
cd /data/project/testserver-scribe/scribe-server
export PORT=8000
./scribe-server
EOF
Make it executable:
chmod +x ~/scribe-server/start-script.sh
🚀 4. Start the Service:
toolforge webservice jdk17 start /data/project/testserver-scribe/scribe-server/start-script.sh
✅ Tip: Although we’re using Go, the
jdk17webservice backend is required foringressrouting compatibility. (check out Other / generic web servers)
🔁 Re-deploying After Making Changes?
Just repeat the key steps:
toolforge webservice stop
git pull # It will pull the latest changes from the branches
go build -o test-scribe-server
toolforge webservice jdk17 start /data/project/testserver-scribe/scribe-server/start-script.sh
🌐 Check the Running Domain
To find the URL where your service is live:
kubectl --namespace=tool-testserver-scribe get ingress

Usually something like: testserver-scribe.toolforge.org
✅ Conclusion
By deploying a demo instance of the scribe-server on Toolforge, you gain a deeper understanding of how Scribe operates within a Wikimedia-compatible environment. This setup not only allows you to test and validate your contributions in real-time but also prepares you for working on larger production-level tools in the future.
Whether you're a new contributor or an experienced developer, having your own live test environment is a powerful way to improve both your workflow and the quality of your contributions.
Happy coding—and welcome to the Scribe community!