🎸 Musique - Service Audio Gonic
Gonic est un serveur de diffusion de musique léger conçu pour fournir aux utilisateurs un moyen simple et efficace de diffuser leurs collections de musique. Il est compatible avec le protocole Subsonic, permettant aux utilisateurs d’accéder à leur musique à partir de divers appareils et plates-formes qui prennent en charge Subsonic. Gonic se concentre sur la fourniture d’une expérience de streaming musical simplifiée sans fonctionnalités ou complexités inutiles, ce qui le rend idéal pour les utilisateurs qui préfèrent une approche minimaliste du streaming musical.
Serveur Audio Gonic
Caractéristiques de Gonic
- navigation par dossier
- navigation par tags (en utilisant taglib - prend en charge mp3, opus, flac, ape, m4a, wav, etc.)
- transcodage et cache audio à la volée (demande ffmpeg)
- mode jukebox subsonic (mpv), pour lecture audio côté serveur sans faille au lieu de streaming
- soutien aux podcasts
- balayage assez rapide
- plusieurs utilisateurs, chacun avec ses propres préférences de transcodage, playlists, meilleurs titres, meilleurs artistes, etc.
- [last.fm] (https://www.last.fm/)
- listenbrainz scrobbling
- les similarités artistiques et les biographies de la dernière. - Oui.
- prise en charge de tags multi-valorisés comme les albumartistes et les genres
- une interface web pour la configuration (configurer en dernier. fm, gérer les utilisateurs, lancer des scans, etc.)
- soutien au tag album-artiste, pour ne pas encombrer votre liste d’artistes avec des apparitions d’albums de compilation
- écrit en go
- sel plus récent et jeton auth
- testés sur airsonic-refix, symfonium, dsub, jamstash, subsonic.el, sublime music, soundwaves, stmp, strawberry, et [subs/subs/
Prérequis
Golang
1
2
sudo apt install golang
go version #go version go1.26.4 linux/amd64
Optionnel
mpvn’est requis que si vous voulez le mode jukeboxffmpegn’est requis que si vous souhaitez transcoder de l’audio
1
sudo apt install fmpeg mpv
Installation gonic
Installer et vérifier
1
2
3
sudo wget https://github.com/sentriz/gonic/releases/download/v0.22.0/gonic-linux-amd64-v0.22.0 -O /usr/local/bin/gonic
sudo chmod +x /usr/local/bin/gonic
gonic -version # v0.22.0
ajouter un utilisateur gonic, créer un répertoire de données et installer le fichier de configuration
1
2
3
4
sudo adduser --system --no-create-home --group gonic
sudo mkdir -p /var/lib/gonic/ /etc/gonic/
sudo chown -R gonic:gonic /var/lib/gonic/
sudo wget https://raw.githubusercontent.com/sentriz/gonic/master/contrib/config -O /etc/gonic/config
mettre à jour la configuration /etc/gonic/config avec votre music-path, podcast-path, etc…
1
2
3
4
5
6
7
8
9
music-path /sharenfs/multimedia/Music/musicyan
podcast-path /sharenfs/multimedia/Music/podcasts
playlists-path /sharenfs/multimedia/Music/playlists
# Interval (in minutes) to check for new music. Default: don't scan
scan-interval 0
scan-at-start-enabled true
scan-watcher-enabled
false
Service gonic
installer le service système, vérifier l’état ou les journaux
Chaque service généré par systemd est configuré par un fichier .service qui se trouve dans le répertoire /etc/systemd/system
1
2
3
4
5
6
7
sudo wget https://raw.githubusercontent.com/sentriz/gonic/master/contrib/gonic.service -O /etc/systemd/system/gonic.service
sudo systemctl daemon-reload
sudo systemctl enable --now gonic
systemctl status gonic # vérifier status, doit être actif (running)
journalctl -f -u gonic # suivre logs
journalctl -t gonic # trace
Accès web
Via SSH
- Gonic → localhost:4747
on va utiliser une redirection de port via ssh
Serveur audio gonic
Ouvrir un terminal sur le client linux qui dispose des clés ssh et lancer la commande
1
ssh -L 9500:127.0.0.1:4747 yick@192.168.0.205 -p 55205 -i /home/yann/.ssh/yick-ed25519
Ouvrir un navigateur sur le client et saisir localhost:9500 pour afficher le serveur audio gonic

Par défaut : admin/admin
Proxy nginx zic.rnmkcy.eu
Gonic est un serveur local http sur le port 4747 et pour un accès externe il nous faut un proxy
Proxy nginx - configuration /etc/nginx/conf.d/zic.rnmkcy.eu.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name zic.rnmkcy.eu;
include /etc/nginx/conf.d/ssl-modern.inc;
location / {
proxy_pass http://localhost:4747;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
}
}
On vérifie et on relance le serveur nginx
1
2
sudo nginx -t
sudo systemctl reload nginx
Accès https://zic.rnmkcy.eu
- Créer un utilisateur ‘audio’
- Changer le mot de passe admin
Playlist aléatoire
Tu peux inspecter la base avec sqlite3 :
1
sqlite3 /var/lib/gonic/gonic.db ".tables"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
album_credits play_queues
album_disc_titles podcast_episodes
album_genres podcasts
album_infos sessions
album_labels settings
album_ratings track_credits
album_stars track_genres
albums track_isrcs
artist_infos track_plays
artist_ratings track_ratings
artist_stars track_stars
artists tracks
bookmarks transcode_format_preferences
genres transcode_preferences
internet_radio_stations users
migrations
Voir le schéma de la table users :
1
sqlite3 /var/lib/gonic/gonic.db "PRAGMA table_info(users);"
1
2
3
4
5
6
7
8
9
0|id|INTEGER|0||1
1|created_at|datetime|0||0
2|name|varchar(255)|1|null|0
3|password|varchar(255)|1|null|0
4|last_fm_session|varchar(255)|0|null|0
5|listen_brainz_url|varchar(255)|0|null|0
6|listen_brainz_token|varchar(255)|0|null|0
7|is_admin|bool|0|null|0
8|avatar|BLOB|0|null|0
Lire les lignes :
1
2
#sqlite3 /var/lib/gonic/gonic.db "SELECT * FROM tracks LIMIT 20;"
sqlite3 /var/lib/gonic/gonic.db "SELECT * FROM users;"
1
2
1|2026-07-11T07:45:00.036938678+02:00|admin|mot_de_passe||||1|
2|2026-07-11T07:51:10.369610847+02:00|audio|mot_de_passe|||||
Si tu ne sais pas les tables, fais seulement :
1
sqlite3 /var/lib/gonic/gonic.db ".schema"
ATTENTION: Les playlists sont liées à l’utilisateur qui a chacun son numéro
- 1 admin /sharenfs/multimedia/Music/playlists/1
- 2 audio /sharenfs/multimedia/Music/playlists/2
Outil linux cli pour créer une playlist m3u dans le dossier utilisateur “audio” /sharenfs/multimedia/Music/playlists/2 à partir du dossier /sharenfs/multimedia/Music/musicyan/
.mp3 aléatoire , listes 100 200 300: /sharenfs/scripts/gener_playlists.sh
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
bash -lc '
in="/sharenfs/multimedia/Music/musicyan"
outdir="/sharenfs/multimedia/Music/playlists/2"
mkdir -p "$outdir"
# nombre de playlists + tailles
sizes=(100 200 300)
# crées 1 playlist par taille (ajuste COUNT si tu veux plusieurs par taille)
for size in "${sizes[@]}"; do
out="$outdir/playlist_${size}_alatoire.m3u"
echo "#EXTM3U" > "$out"
# prend jusqua $size fichiers mp3 sans récursivité
mapfile -t files < <(find "$in" -maxdepth 1 -type f -iname "*.mp3" | shuf)
n="${#files[@]}"
if [ "$n" -gt 0 ]; then
take=$size
[ "$n" -lt "$take" ] && take="$n"
for i in $(seq 0 $((take-1))); do
printf "%s\n" "${files[$i]}" >> "$out"
done
fi
echo "OK: $out"
done
'
Le rendre exécutable et exécuter
1
2
chmod +x /sharenfs/scripts/gener_playlists.sh
/sharenfs/scripts/gener_playlists.sh
le script crée 3 fichiers M3U distincts dans /sharenfs/multimedia/Music/playlists/2/ :
1
2
3
OK: /sharenfs/multimedia/Music/playlists/2/playlist_100_alatoire.m3u
OK: /sharenfs/multimedia/Music/playlists/2/playlist_200_alatoire.m3u
OK: /sharenfs/multimedia/Music/playlists/2/playlist_300_alatoire.m3u

