feat(seed): add homelab applications with associated ports
Add 16 common homelab applications (Nginx, Pi-hole, WireGuard, OpenVPN, PostgreSQL, MariaDB, Redis, Grafana, Prometheus, Elasticsearch, Kibana, Portainer, Jellyfin, Home Assistant, Syncthing, Vaultwarden) with their standard port associations. Also extends the ports catalog with 10 new entries (WireGuard, Syncthing, Jellyfin, Home Assistant, Portainer, MariaDB, Redis, etc.) and logs the application count in the seed binary output. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -64,31 +64,41 @@ WHERE NOT EXISTS (SELECT 1 FROM hosts WHERE hosts.name = t.name AND hosts.ip = t
|
||||
-- ── Ports catalog ─────────────────────────────────────────────────────────────
|
||||
|
||||
INSERT INTO ports (number, description) VALUES
|
||||
(22, 'SSH'),
|
||||
(25, 'SMTP'),
|
||||
(53, 'DNS'),
|
||||
(80, 'HTTP'),
|
||||
(143, 'IMAP'),
|
||||
(161, 'SNMP'),
|
||||
(443, 'HTTPS'),
|
||||
(445, 'SMB'),
|
||||
(465, 'SMTPS'),
|
||||
(500, 'IKE / IPSec'),
|
||||
(514, 'Syslog'),
|
||||
(587, 'SMTP Submission'),
|
||||
(873, 'rsync'),
|
||||
(993, 'IMAPS'),
|
||||
(1194, 'OpenVPN'),
|
||||
(2049, 'NFS'),
|
||||
(3000, 'Grafana'),
|
||||
(3389, 'RDP'),
|
||||
(4500, 'IPSec NAT-T'),
|
||||
(5044, 'Logstash Beats'),
|
||||
(5432, 'PostgreSQL'),
|
||||
(5601, 'Kibana'),
|
||||
(9090, 'Prometheus'),
|
||||
(9100, 'JetDirect'),
|
||||
(9200, 'Elasticsearch')
|
||||
(22, 'SSH'),
|
||||
(25, 'SMTP'),
|
||||
(53, 'DNS'),
|
||||
(80, 'HTTP'),
|
||||
(143, 'IMAP'),
|
||||
(161, 'SNMP'),
|
||||
(443, 'HTTPS'),
|
||||
(445, 'SMB'),
|
||||
(465, 'SMTPS'),
|
||||
(500, 'IKE / IPSec'),
|
||||
(514, 'Syslog'),
|
||||
(587, 'SMTP Submission'),
|
||||
(873, 'rsync'),
|
||||
(993, 'IMAPS'),
|
||||
(1194, 'OpenVPN'),
|
||||
(2049, 'NFS'),
|
||||
(3000, 'Grafana / Gitea'),
|
||||
(3306, 'MariaDB / MySQL'),
|
||||
(3389, 'RDP'),
|
||||
(4500, 'IPSec NAT-T'),
|
||||
(5044, 'Logstash Beats'),
|
||||
(5432, 'PostgreSQL'),
|
||||
(5601, 'Kibana'),
|
||||
(6379, 'Redis'),
|
||||
(8096, 'Jellyfin'),
|
||||
(8123, 'Home Assistant'),
|
||||
(8384, 'Syncthing UI'),
|
||||
(8920, 'Jellyfin HTTPS'),
|
||||
(9000, 'Portainer'),
|
||||
(9090, 'Prometheus'),
|
||||
(9100, 'node_exporter / JetDirect'),
|
||||
(9200, 'Elasticsearch'),
|
||||
(9443, 'Portainer HTTPS'),
|
||||
(22000, 'Syncthing'),
|
||||
(51820, 'WireGuard')
|
||||
ON CONFLICT (number) DO NOTHING;
|
||||
|
||||
-- ── Host ports ────────────────────────────────────────────────────────────────
|
||||
@@ -193,3 +203,84 @@ INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, 22 FROM hosts h
|
||||
WHERE h.name = 'vpn-client-02' AND h.ip = '172.16.1.11'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- ── Applications ──────────────────────────────────────────────────────────────
|
||||
-- applications has no UNIQUE constraint on name, so we use WHERE NOT EXISTS.
|
||||
|
||||
INSERT INTO applications (name)
|
||||
SELECT v.name FROM (VALUES
|
||||
('Nginx'),
|
||||
('Pi-hole'),
|
||||
('WireGuard'),
|
||||
('OpenVPN'),
|
||||
('PostgreSQL'),
|
||||
('MariaDB'),
|
||||
('Redis'),
|
||||
('Grafana'),
|
||||
('Prometheus'),
|
||||
('Elasticsearch'),
|
||||
('Kibana'),
|
||||
('Portainer'),
|
||||
('Jellyfin'),
|
||||
('Home Assistant'),
|
||||
('Syncthing'),
|
||||
('Vaultwarden')
|
||||
) AS v(name)
|
||||
WHERE NOT EXISTS (SELECT 1 FROM applications WHERE name = v.name);
|
||||
|
||||
-- ── Application ports ─────────────────────────────────────────────────────────
|
||||
|
||||
-- Nginx: HTTP, HTTPS
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 80 FROM applications WHERE name = 'Nginx' ON CONFLICT DO NOTHING;
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 443 FROM applications WHERE name = 'Nginx' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Pi-hole: DNS, HTTP (admin UI), HTTPS
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 53 FROM applications WHERE name = 'Pi-hole' ON CONFLICT DO NOTHING;
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 80 FROM applications WHERE name = 'Pi-hole' ON CONFLICT DO NOTHING;
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 443 FROM applications WHERE name = 'Pi-hole' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- WireGuard
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 51820 FROM applications WHERE name = 'WireGuard' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- OpenVPN
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 1194 FROM applications WHERE name = 'OpenVPN' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- PostgreSQL
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 5432 FROM applications WHERE name = 'PostgreSQL' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- MariaDB
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 3306 FROM applications WHERE name = 'MariaDB' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Redis
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 6379 FROM applications WHERE name = 'Redis' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Grafana
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 3000 FROM applications WHERE name = 'Grafana' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Prometheus
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 9090 FROM applications WHERE name = 'Prometheus' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Elasticsearch
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 9200 FROM applications WHERE name = 'Elasticsearch' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Kibana
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 5601 FROM applications WHERE name = 'Kibana' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Portainer: HTTP, HTTPS
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 9000 FROM applications WHERE name = 'Portainer' ON CONFLICT DO NOTHING;
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 9443 FROM applications WHERE name = 'Portainer' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Jellyfin: HTTP, HTTPS
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 8096 FROM applications WHERE name = 'Jellyfin' ON CONFLICT DO NOTHING;
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 8920 FROM applications WHERE name = 'Jellyfin' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Home Assistant
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 8123 FROM applications WHERE name = 'Home Assistant' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Syncthing: UI, data sync
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 8384 FROM applications WHERE name = 'Syncthing' ON CONFLICT DO NOTHING;
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 22000 FROM applications WHERE name = 'Syncthing' ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Vaultwarden: HTTP, HTTPS
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 80 FROM applications WHERE name = 'Vaultwarden' ON CONFLICT DO NOTHING;
|
||||
INSERT INTO application_ports (application_id, port_number) SELECT id, 443 FROM applications WHERE name = 'Vaultwarden' ON CONFLICT DO NOTHING;
|
||||
|
||||
Reference in New Issue
Block a user