An open API service indexing awesome lists of open source software.

https://github.com/nexveridian/attic-compose

Deploying Attic Nix Binary Cache With Docker Compose
https://github.com/nexveridian/attic-compose

attic binary-cache cache ci ci-cd github-actions nix nix-flake nixos

Last synced: 3 months ago
JSON representation

Deploying Attic Nix Binary Cache With Docker Compose

Awesome Lists containing this project

README

        

# Attic Compose
Deploying Attic Nix Binary Cache With Docker Compose

## Server Install
Install docker and docker compose

`git clone`

See [/scr](./src), create a `prod.env` and `server.toml` files

then run

```bash
just up
just create_token
```

### Exmaple Traefik Label
```yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.attic.rule=Host(`nix.example.com`)"
- "traefik.http.routers.attic.entrypoints=websecure"
- "traefik.http.routers.attic.tls.certresolver=myhttpchallenge"
- "traefik.http.services.attic.loadbalancer.server.port=8080"
- "traefik.http.routers.attic-http.middlewares=redirect-to-https"
- "traefik.docker.network="
```

### Cloudflare
If you are using cloudflare make the subdomain DNS only

### Check if it works
If working nix.example.com should say `attic push`

## Client Install
Install `pkg.attic-client`

make sure your user is trusted
```nix
nix.settings = {
trusted-users = [
"root"
""
];
};
```

```bash
# then login to attic
attic login https://nix.example.com

# create a cache to push to
attic cache create

# use the cache
attic use

# pushing to the cache
attic push /nix/store/*/
```

## Github Actions Install
Add the token from `just create_token` to your repository secrets `https://github.com///settings/secrets/actions`
```yaml
steps:
- uses: actions/checkout@v3
- uses: DeterminateSystems/nix-installer-action@main
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client login https://nix.example.com ${{ secrets.ATTIC_TOKEN }} || true
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client cache create || true
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client use || true

- run: nix flake check --all-systems

- run: |
for i in {1..5}; do
nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client push /nix/store/*/ && break || [ $i -eq 5 ] || sleep 5
done
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client push /nix/store/*/ || true
```

# License
All code in this repository is dual-licensed under either [License-MIT](./LICENSE-MIT) or [LICENSE-APACHE](./LICENSE-Apache) at your option. This means you can select the license you prefer. [Why dual license](https://github.com/bevyengine/bevy/issues/2373).