117 lines
2.9 KiB
Markdown
117 lines
2.9 KiB
Markdown
# APT DEPOT 📦
|
||
|
||
Créer un dépôt Debian sécurisé via clé GPG pour héberger des paquets
|
||
|
||
## CONFIGURATION
|
||
|
||
- Editer le fichier `app/entrypoint.sh`
|
||
```sh
|
||
GPG_KEY_NAME="example"
|
||
...
|
||
EMAIL="test@exemple.com"
|
||
```
|
||
|
||
- Changer le port `- 8000:` dans le `compose.yml` si besoin
|
||
|
||
- Metre les paquets dans le dossier `depot/`
|
||
|
||
## UTILISATION
|
||
|
||
- Démarrer le conteneur
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
Note: La première fois, il génère les clés GPG
|
||
|
||
:bulb: **A chaque ajout de paquet, redémarrer le conteneur pour qu'il resigne les paquets avec la clé GPG**
|
||
|
||
#### Utiliser le dépôt pour installer des paquets
|
||
|
||
- Ajouter la clé du dépôt ainsi que l'adresse dans les sources:
|
||
```bash
|
||
sudo wget -O /etc/apt/trusted.gpg.d/gn-depot.asc https://deb.legaragenumerique.fr/pgp-key.public
|
||
|
||
echo 'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/gn-depot.asc] https://deb.legaragenumerique.fr stable main' \
|
||
| sudo tee /etc/apt/sources.list.d/gn-depot.list
|
||
```
|
||
|
||
- Mettre à jour les dépôts:
|
||
```bash
|
||
sudo apt update
|
||
```
|
||
|
||
- Installer un paquet:
|
||
```bash
|
||
sudo apt install geo -y
|
||
```
|
||
|
||
#### Création d'un paquet
|
||
|
||
> [Créer un paquet Debian](https://git.legaragenumerique.fr/GARAGENUM/paquet-debian)
|
||
|
||
#### Ajout d'un paquet au dépôt
|
||
|
||
- Renommer le paquet (pour que le dépôt l'intègre selon l'architecture):
|
||
```bash
|
||
mv geo.deb geo_amd64.deb
|
||
```
|
||
|
||
- Placer le paquet dans le dossier `depot/`:
|
||
```bash
|
||
mv geo_amd64.deb depot/
|
||
```
|
||
|
||
- Redémarrer le conteneur:
|
||
```bash
|
||
docker compose down -v && docker compose up -d --build
|
||
```
|
||
|
||
#### Si derrière un proxy
|
||
|
||
```
|
||
server {
|
||
listen 80;
|
||
server_name deb.domaine.tld;
|
||
|
||
location / {
|
||
return 301 https://$host$request_uri;
|
||
}
|
||
}
|
||
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name deb.domaine.tld;
|
||
|
||
# Certificats Let’s Encrypt (créés par certbot)
|
||
ssl_certificate /etc/letsencrypt/live/deb.domaine.tld/fullchain.pem;
|
||
ssl_certificate_key /etc/letsencrypt/live/deb.domaine.tld/privkey.pem;
|
||
|
||
ssl_protocols TLSv1.2 TLSv1.3;
|
||
ssl_prefer_server_ciphers on;
|
||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||
|
||
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
|
||
add_header X-Content-Type-Options nosniff;
|
||
add_header X-Frame-Options DENY;
|
||
add_header X-XSS-Protection "1; mode=block";
|
||
add_header Referrer-Policy "no-referrer-when-downgrade";
|
||
|
||
access_log /var/log/nginx/depot.access.log;
|
||
error_log /var/log/nginx/depot.error.log;
|
||
|
||
location / {
|
||
proxy_pass <IP-SERVEUR>:<PORT>;
|
||
autoindex on;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_redirect off;
|
||
}
|
||
}
|
||
```
|
||
|
||
## REQUETES DE PAQUETS
|
||
|
||
Pour toute demande d'ajout de paquet Debian, Créer une [issue](https://git.legaragenumerique.fr/GARAGENUM/depot-apt/issues) avec le plus d'informations concernant le paquet (code source par exemple). |