Deploying Smederee
Introduction
Smederee is a lightweight, self-hosted Git repository hosting service built with Scala and the Tapir library. Named after the Serbian word for a type of forge, Smederee aims to provide a focused, minimal Git hosting experience without the complexity of larger platforms like GitLab or Gitea.
For developers and teams who need simple Git hosting without issue tracking, CI/CD, or other features they don’t use, Smederee offers a streamlined alternative. It focuses on doing one thing well: hosting Git repositories with a clean web interface.
Key features of Smederee include:
- Lightweight: Minimal resource requirements compared to full-featured Git platforms
- Simple Interface: Clean, focused web UI for repository browsing
- Git Protocol Support: Standard Git operations over HTTP
- Repository Browsing: View files, commits, and branches through the web interface
- User Management: Basic authentication and access control
- Scala/Tapir Stack: Modern, type-safe backend architecture
- Docker Ready: Easy containerized deployment
- Open Source: Transparent codebase under an open license
This guide walks through deploying Smederee on Klutch.sh using Docker.
Why Deploy Smederee on Klutch.sh
Deploying Smederee on Klutch.sh provides several advantages:
Simplified Deployment: Klutch.sh handles container builds and deployment automatically.
Persistent Storage: Your repositories survive restarts and redeployments.
HTTPS by Default: Secure Git operations with automatic SSL certificates.
GitHub Integration: Deploy from your configuration repository automatically.
Scalable Resources: Allocate resources based on your repository size and traffic.
Custom Domains: Use your own domain for repository access.
Always Available: 24/7 access to your code repositories.
Prerequisites
Before deploying Smederee on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker and Git
- (Optional) A custom domain for your Git hosting
Deploying Smederee on Klutch.sh
Create a GitHub Repository
Create a new GitHub repository for your Smederee deployment configuration.
Create Your Dockerfile
Create a Dockerfile:
FROM eclipse-temurin:17-jre
WORKDIR /app
RUN apt-get update && apt-get install -y git curl && rm -rf /var/lib/apt/lists/*
# Download Smederee (adjust URL to latest release)RUN curl -L -o smederee.jar https://github.com/smederee/smederee/releases/latest/download/smederee.jar
ENV SMEDEREE_HOST=0.0.0.0ENV SMEDEREE_PORT=8080ENV SMEDEREE_REPOS_PATH=/data/reposENV SMEDEREE_DB_PATH=/data/db
RUN mkdir -p /data/repos /data/db
EXPOSE 8080
CMD ["java", "-jar", "smederee.jar"]Create Configuration (Optional)
If Smederee uses a configuration file, create application.conf:
smederee { host = "0.0.0.0" host = ${?SMEDEREE_HOST}
port = 8080 port = ${?SMEDEREE_PORT}
repos-path = "/data/repos" repos-path = ${?SMEDEREE_REPOS_PATH}
db-path = "/data/db" db-path = ${?SMEDEREE_DB_PATH}}Push Your Repository to GitHub
Commit and push your files.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project.
Create a New App
Create a new app and connect your GitHub repository.
Configure Environment Variables
Add any necessary environment variables:
| Variable | Value |
|---|---|
SMEDEREE_HOST | 0.0.0.0 |
SMEDEREE_PORT | 8080 |
SMEDEREE_REPOS_PATH | /data/repos |
SMEDEREE_DB_PATH | /data/db |
Configure HTTP Settings
Set the traffic type to HTTP and configure the internal port to 8080.
Attach Persistent Storage
Add persistent volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/data/repos | 10 GB+ | Git repositories |
/data/db | 1 GB | Application database |
Deploy Your Application
Click Deploy to start the build process.
Access Smederee
Once deployment completes, access your Smederee instance at your app’s URL.
Create Repositories
Start creating repositories through the web interface.
Working with Smederee
After deployment, you can work with your repositories:
Clone a repository:
git clone https://your-smederee.klutch.sh/user/repo.gitPush to a repository:
git remote add origin https://your-smederee.klutch.sh/user/repo.gitgit push -u origin mainAlternative Git Hosting Options
If Smederee doesn’t meet your needs, consider these alternatives also deployable on Klutch.sh:
- Gitea: Full-featured, lightweight Git service
- Gogs: Simple, painless self-hosted Git service
- GitLab: Enterprise-grade Git platform
- cgit: Hyperfast web frontend for Git repositories
Additional Resources
Conclusion
Deploying Smederee on Klutch.sh gives you a lightweight Git hosting solution without the complexity of larger platforms. For developers and teams who want simple, focused repository hosting, Smederee provides exactly what’s needed and nothing more.
With Klutch.sh handling the infrastructure, you can focus on your code rather than managing Git hosting software.