We use an automated script winejs_install_forgejogitlfs_opengraph.sh to provision Forgejo on the WineJS platform with Git LFS support and full integration:
# winejs_install_forgejogitlfs_opengraph.sh # - Verifies WineJS platform at /opt/winejs # - Creates docker network (winejs-net) # - Downloads & configures Forgejo with Git LFS support # - Sets up LFS path mapping server for large file handling # - Creates shared volumes system (backups, imports, ci-cd) # - Sets up auto-heal monitor and PM2 persistence # - Injects OpenGraph meta tags for GitHub-style social sharing # - Adds Repository Info button with JSON metadata extraction # - Adds VsCodeServer fast-repo button # - Configures webhook endpoints for automation # ✅ Makes Forgejo accessible at https://your-domain.com/forgejo/
Git-LFS
allows you to upload and store files more than 50mb, with extra filetype-specific monitoring
After running the installer, Forgejo is ready:
# Forgejo installation takes ~2-3 minutes to complete # Open https://your-domain.com/forgejo/ in the browser
The first time you start the app, you need to:
1c9ca278c04f1713f3ff29ac03f81179a11acf85)
Auth token is required for private repos to clone.
Forgejo supports multiple users on a repo without sharing accounts:
git clone https://[email protected]/forgejo/USERNAME/REPO.git
✅ Pros:
✅ Best practice for a game dev team:
Your project enables you to utilize two powerful text editors:
Both editors can be used simultaneously for writing code. However, the game compilation happens in Visual Studio 2022 or with 'cmake' on VSCode.
6 — Enable Git LFS on
Developer MachinesTo manage large binary files in video game projects (like UE3 assets), Git LFS should be initialized on every developer machine:
✅ This ensures all large game assets (textures, models, sounds, binaries) are tracked efficiently with Git LFS, reducing repository size and improving collaboration.
Forgejo supports webhooks, which let your repository send real-time updates to external services (e.g., Discord, project management tools, or CI/CD pipelines). Configure them here:
https://wine.example.com/forgejo/username/repo/settings/hooks
https://discord.com/api/webhooks/.../... URL.Now every commit, PR, or release will post directly to your Discord channel.
You can connect Forgejo to open-source or self-hosted tools by creating webhook endpoints. Each endpoint can process repository events (like pushes, pull requests, or issue updates) and update your project boards, chat systems, or other services.
✅ This keeps your workflow fully open-source and self-hosted, without relying on paid cloud services.
If you want to process Forgejo events yourself (e.g., trigger a build, auto-tag, or custom bot), here’s a simple Python Flask app to catch webhook payloads:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/webhook", methods=["POST"])
def forgejo_webhook():
event = request.headers.get("X-Gitea-Event") # Forgejo is Gitea-compatible
payload = request.json
print(f"Received {event}: {payload}")
# Example: push event
if event == "push":
commits = payload.get("commits", [])
for commit in commits:
print(f"New commit: {commit['message']} by {commit['author']['name']}")
return jsonify({"status": "ok"})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
import requests
discord_webhook = "https://discord.com/api/webhooks/XXXX/YYYY"
def post_to_discord(message):
data = {"content": message}
response = requests.post(discord_webhook, json=data)
print("Discord response:", response.status_code)
# Example usage
post_to_discord("New build completed! 🚀")
✅ With this, you can integrate Forgejo with both Discord for alerts and any custom project management system.
To improve workflow efficiency, a custom Tampermonkey script was written for Firefox.
This script adds customizable, repository-specific navigation buttons to your Forgejo instance's header.
What does this script do?
Once installed, it injects useful icons (for quick access to project management tools, VM creation,
documentation, etc.) directly into the Forgejo interface on a per-repository basis. This is ideal for teams
that
have specific automation or links tied to their projects.
Fully Customizable: The script is a starting point and can be easily modified to add, remove, or change the buttons and their links to fit your exact needs.