blob: 71dab6696f21338b4726232eb28de7dcf6c815c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# DEPLOIEMENT_KONENPAN
## Objectif
Deployer les fichiers du projet sur `konenpan` de facon propre, reproductible et reversible.
## Strategie recommandee (Git relay)
- Poste dev (Antel) -> depot bare central sur `chillka`:
- `/var/data/git/repositories/medias.git`
- `konenpan` deploie depuis ce depot Git (clone/pull).
- Branches officielles:
- `main` (stable)
- `develop` (integration)
- Aucune branche `master` exploitee.
## Initialisation du depot central sur chillka
```bash
cd /var/data/git/repositories
git init --bare medias.git
# Forcer HEAD du depot bare sur main (pas master)
git --git-dir=/var/data/git/repositories/medias.git symbolic-ref HEAD refs/heads/main
```
## Bootstrap des branches depuis Antel (Windows Git Bash)
Depuis `e:/Dev/Web-Works/Medias`:
```bash
cd /e/Dev/Web-Works/Medias
git init
git checkout -b main
git add .
git commit -m "Initial commit medias platform"
git remote add origin toshiro@192.168.99.55:/var/data/git/repositories/medias.git
git push -u origin main
# Creer la branche develop et la publier
git checkout -b develop
git push -u origin develop
```
Verification sur chillka:
```bash
git --git-dir=/var/data/git/repositories/medias.git branch -a
git --git-dir=/var/data/git/repositories/medias.git symbolic-ref HEAD
```
Resultat attendu:
- branches: `main`, `develop`
- HEAD: `refs/heads/main`
## Deploiement depuis konenpan (via Git)
```bash
mkdir -p ~/src
cd ~/src
git clone toshiro@192.168.99.55:/var/data/git/repositories/medias.git
cd medias
# Production/validation stable
git checkout main
# Option integration
# git checkout develop
```
Ensuite:
```bash
cp .env.photoprism-secure.example .env.dev
nano .env.dev
docker compose --env-file .env.dev -f compose.photoprism-secure.dev.yml up -d --build
```
Important:
- Le dossier `media-access-api/` doit etre present dans le repo clone (code + Dockerfile).
- Le service est construit localement par Docker Compose, aucune image GHCR n'est requise pour demarrer.
## Cycle de mise a jour
Sur Antel:
```bash
cd /e/Dev/Web-Works/Medias
git checkout develop
git add .
git commit -m "Update: <changement>"
git push
```
Sur konenpan:
```bash
cd ~/src/medias
git checkout develop
git pull --ff-only
docker compose --env-file .env.dev -f compose.photoprism-secure.dev.yml up -d --build
```
## Emplacement recommande
- Code applicatif: `/opt/medias/releases/<timestamp>`
- Lien actif: `/opt/medias/current`
- Secrets env: `/opt/medias/shared/.env.dev` (hors release)
- Proprietaire: utilisateur d'exploitation (ex: `toshiro`)
Pourquoi:
- rollback facile via changement du lien `current`
- separation nette code/secrets
- evite les edits manuels disperses dans `~/`
## Preparation sur konenpan
```bash
sudo mkdir -p /opt/medias/releases /opt/medias/shared
sudo chown -R toshiro:toshiro /opt/medias
```
## Transfert depuis Windows (PowerShell)
Depuis `e:\Dev\Web-Works\Medias`:
```powershell
$TS = Get-Date -Format "yyyyMMdd-HHmmss"
ssh toshiro@192.168.99.23 "mkdir -p /opt/medias/releases/$TS"
scp -r "e:\Dev\Web-Works\Medias\*" toshiro@192.168.99.23:/opt/medias/releases/$TS/
```
Option recommandee (si `rsync` dispo) pour transferts incrementaux:
```bash
rsync -avz --delete \
--exclude ".git" \
--exclude ".env*" \
e:/Dev/Web-Works/Medias/ \
toshiro@192.168.99.23:/opt/medias/releases/<timestamp>/
```
## Activation de la release
Sur `konenpan`:
```bash
ln -sfn /opt/medias/releases/<timestamp> /opt/medias/current
cp /opt/medias/current/.env.photoprism-secure.example /opt/medias/shared/.env.dev
nano /opt/medias/shared/.env.dev
```
Lancer la stack depuis `current` avec env partage:
```bash
cd /opt/medias/current
docker compose --env-file /opt/medias/shared/.env.dev -f compose.photoprism-secure.dev.yml up -d --build
docker compose --env-file /opt/medias/shared/.env.dev -f compose.photoprism-secure.dev.yml ps
```
## Validation post-deploiement
```bash
curl -I http://127.0.0.1:8082/health
curl -I http://127.0.0.1:8081/health
docker compose --env-file /opt/medias/shared/.env.dev -f compose.photoprism-secure.dev.yml logs --since=15m
```
## Rollback rapide
```bash
ln -sfn /opt/medias/releases/<ancien-timestamp> /opt/medias/current
cd /opt/medias/current
docker compose --env-file /opt/medias/shared/.env.dev -f compose.photoprism-secure.dev.yml up -d --build
```
## Bonnes pratiques
- Ne jamais transferer de secrets depuis le poste local.
- Versionner le code, pas `.env.dev`.
- Garder 2-3 releases precedentes pour rollback.
- Tracer chaque deploiement dans `docs/CHANGELOG_OPERATIONS.md`.
- Proteger `main` (pas de push direct en production, privilegier PR depuis `develop`).
|