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-Server
Create 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
jdk17
webservice backend is required foringress
routing 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!
Subscribe to my newsletter
Read articles from muhamad asif directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
