Skip to content

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.0
    ENV SMEDEREE_PORT=8080
    ENV SMEDEREE_REPOS_PATH=/data/repos
    ENV 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:

    VariableValue
    SMEDEREE_HOST0.0.0.0
    SMEDEREE_PORT8080
    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 PathRecommended SizePurpose
    /data/repos10 GB+Git repositories
    /data/db1 GBApplication 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:

Terminal window
git clone https://your-smederee.klutch.sh/user/repo.git

Push to a repository:

Terminal window
git remote add origin https://your-smederee.klutch.sh/user/repo.git
git push -u origin main

Alternative 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.