Skip to content
Select theme
  • Auto
  • Dark
  • Light

Run the server

This page is for the server admin.

Docker

  1. Start the server.

    Terminal window
    docker run -d --name telesphorepo -p 8080:8080 -v telesphorepo-data:/data -v telesphorepo-backups:/backups ghcr.io/telesphorepo/telesphorepo:latest
  2. Copy the admin password from the log.

    Terminal window
    docker logs telesphorepo

Docker Compose

  1. Save this as compose.yaml in a folder of its own.

    compose.yaml
    services:
    telesphorepo:
    image: ghcr.io/telesphorepo/telesphorepo:latest
    restart: unless-stopped
    ports:
    - "8080:8080"
    volumes:
    - telesphorepo-data:/data
    - telesphorepo-backups:/backups
    volumes:
    telesphorepo-data:
    name: telesphorepo-data
    telesphorepo-backups:
    name: telesphorepo-backups
  2. Start the server.

    Terminal window
    docker compose up -d
  3. Copy the admin password from the log.

    Terminal window
    docker compose logs telesphorepo

For HTTPS and backups in the same file, see Run with Docker Compose.

Podman

  1. Start the server.

    Terminal window
    podman run -d --name telesphorepo -p 8080:8080 -v telesphorepo-data:/data -v telesphorepo-backups:/backups ghcr.io/telesphorepo/telesphorepo:latest
  2. Copy the admin password from the log.

    Terminal window
    podman logs telesphorepo

Download the program

  1. Download the telesphorepo-server file for your system from GitHub Releases.

  2. Unpack the file.

  3. Start the server, and copy the admin password that it shows.

    Terminal window
    ./telesphorepo-server serve
  1. Open http://localhost:8080.

  2. Sign in as admin, with the password from the log.

  3. Add your authenticator app when the page asks.

    Authenticator app › Add. Scan the code, then type the code from your phone.

  1. Open Settings › General.

  2. Set Public base URL to the address that people use.

    https://repo.example.com
  3. Click Save.

CI jobs cannot publish without the public address. To serve it over HTTPS with Caddy, see Serve over HTTPS.

  1. Open Settings › Repositories, then click New repository.

  2. Type a name, such as releases.

  3. Choose the format: Maven / Gradle, npm, Python (PyPI), Cargo (Rust), NuGet, Debian (apt) or Raw files. For Docker, see below.

  4. Choose Hosted for your own packages.

  5. Click Create repository.

A proxy keeps a copy of each package that people download from a public registry. A group joins several repositories under one address. With a group of your hosted repository and a proxy, people install your packages and the public ones through one address.

  1. Make a repository of the same format, and choose Proxy. Pick the remote, such as Maven Central, registry.npmjs.org, PyPI, crates.io or nuget.org.

  2. Make a repository of the same format, and choose Group.

  3. Add the members in order: your hosted repository first, then the proxy.

  4. Click Create repository.

Neither kind takes uploads. In an npm, Python, Cargo or NuGet group, the first member that has a package name owns it, and the group serves every version of that name from that member only. So a public package with the name of your private package cannot take its place. A Maven group merges the versions of all its members.

A Docker repository holds container images, Helm charts and other OCI files.

  1. Open Settings › Repositories, then click New repository.

  2. Type a name, such as docker. It is the first part of every image name.

  3. Choose Docker. Choose Hosted to push images to it. Choose Proxy to keep copies of Docker Hub, GitHub Container Registry or Quay. Choose Group to join several repositories.

  4. Click Create repository.

Docker needs the server at the root of a host, such as https://repo.example.com. It cannot use an address with a path. For large images and the push address, see Run in production. People push and pull as in Docker and Helm.

  1. Open Settings › Repositories › your repository › Access.

  2. Click Give access.

  3. Choose the people.

  4. Tick Publish.

  5. Click the button that gives them access.

To add a person first, open Settings › People and click New account. See People and sign-in.

Then send people two links: Set up a project for the first person on a project, and Publish a package for everyone. Also send the page of your format: Gradle and Maven, npm, Python, Rust and Cargo, .NET and NuGet, Docker and Helm, or Debian, raw and curl.

A developer sends you the values. Set up a project tells them which ones.

  1. Open Settings › CI pipelines, then click New CI pipeline.

  2. Choose GitHub Actions or Jenkins.

  3. Fill in the values that the developer sent you.

  4. Tick the repository.

  5. Click Create CI pipeline.

Jenkins: a freestyle job or a Jenkinsfile

Both kinds of job use the same CI pipeline. Under Jobs, write the full job name with its folders, such as team/app. A branch of a multibranch pipeline is a job of its own, such as app/main.

If this server cannot reach Jenkins, open the Jenkins address followed by /oidc/jwks. Paste the whole page into Jenkins keys. Do it again when Jenkins changes its keys.

To copy your Nexus 3 repositories, see Move from Nexus.

Find your problem, then do the fix

The log shows no password. Wait a few seconds, then run the log command again.

You lost the admin password. Run docker exec -it telesphorepo /telesphorepo-server user passwd admin, and type a new one.

You want to pick the first admin yourself. Set TR_BOOTSTRAP_ADMIN_USER and TR_BOOTSTRAP_ADMIN_PASSWORD on the first start. The server reads them only while it has no users.

Your data is gone after you removed the container. Always keep the telesphorepo-data volume. It holds the database, the files and the key for your secret settings.

You run the program and want to know where the data is. It is in ./data, next to where you started it.

Which image tags and systems are there? The image runs on linux/amd64 and linux/arm64. Each release has the tags X.Y.Z and X.Y, and latest is the newest. Check a downloaded program against SHA256SUMS on the release page.