add: initial services list, authelia initial configuration, up in date prompt ai, json schema for services list

This commit is contained in:
2026-07-13 12:26:10 +02:00
parent 21e1166556
commit 6ec4e8c5d6
7 changed files with 1541 additions and 0 deletions
+219
View File
@@ -0,0 +1,219 @@
{
"$schema": "https://json-schema.org/draft-07/schema#",
"title": ".digital_hq",
"description": "My network's specification v0.1",
"type": "object",
"properties": {
"name": {"$ref": "#/$defs/name"},
"domain": {"$ref": "#/$defs/domain"},
"home_url": {
"description": "the first url to enter the network",
"$ref": "#/$defs/url"
},
"regions": {
"type": "array",
"items": {
"$ref": "#/$defs/region"
}
},
"machines": {
"type": "array",
"items": {
"$ref": "#/$defs/machine"
},
"minItems": 1
},
"services": {
"type": "array",
"items": {
"$ref": "#/$defs/service"
},
"minItems": 1
},
"groups": {
"type": "array",
"items": {
"$ref": "#/$defs/group"
},
"minItems": 3
},
"users": {
"type": "array",
"items": {
"$ref": "#/$defs/user"
},
"minItems": 1
}
},
"$defs": {
"id": {
"type": "string",
"examples": ["cortex", "maurane", "postgres-shared"]
},
"ip": {
"type": "string",
"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
},
"name": {
"type": "string",
"examples": ["Maurane", "AFFiNE", "Gaufre"]
},
"domain": {
"type": "string",
"pattern": "^[a-z]+\\.([a-z]*\\.)*[a-z]{2,10}"
},
"url": {
"type": "string",
"pattern": "^(https?|postgres)://[a-z0-9.-]+(\\.[a-z]{2,10})?(:[0-9]+)?(/.*)?$"
},
"email": {
"type": "string",
"pattern": "^[a-z0-9-\\.]+@[a-z]+\\.[a-z]{2,10}"
},
"service": {
"type": "object",
"properties": {
"id": {"$ref": "#/$defs/id"},
"name": {"$ref": "#/$defs/name"},
"machine_id": {"$ref": "#/$defs/id"},
"ports": {
"type": "array",
"items": {
"type": "number",
"minimum": 1
},
"minItems": 1
},
"public_url": {"$ref": "#/$defs/url"},
"internal_url": {"$ref": "#/$defs/url"},
"status": {
"type": "string",
"enum": ["active", "inactive", "planned", "wip" , "tested", "broken"]
},
"auth": {
"type": "string",
"enum": ["session cookie", "trusted headers", "oidc", "vpn", "internal", "none"]
},
"installation_mode": {
"type": "string",
"enum": ["docker", "native"]
},
"categories": {
"type": "array",
"items": {
"enum": ["ai", "auth", "automation", "backup", "caldav", "communication", "database", "dev", "experimental", "finance", "media", "monitoring", "network", "productivity", "storage"]
}
},
"dependencies": {
"type": "array",
"items": {"$ref": "#/$defs/name"}
},
"allowed_groups": {
"type": "array",
"items": {"$ref": "#/$defs/name"},
"minItems": 1
}
},
"required": ["id", "name", "machine_id", "status", "allowed_groups"]
},
"machine": {
"type": "object",
"properties": {
"id": {"$ref": "#/$defs/id"},
"name": {"$ref": "#/$defs/name"},
"ip": {
"description": "private ip addresss of a server",
"$ref": "#/$defs/ip"
},
"public_ip": {
"description": "public ip address of a server",
"$ref": "#/$defs/ip"
},
"provider": {
"type": "string",
"enum": ["ovh", "hostinger", "aws", "hertzner"]
},
"role": {
"type": "string"
},
"domains": {
"type": "array",
"items": {
"type": "object",
"properties": {
"internal": {
"$ref": "#/$defs/domain"
},
"external": {
"$ref": "#/$defs/domain"
}
},
"minProperties": 1,
"maxProperties": 1,
"additionalProperties": false
},
"contains": {"required": ["internal"]},
"uniqueItems": true
}
},
"required": ["id", "ip", "name", "domains"]
},
"region": {
"description": "sub part of the main digital hq land",
"type": "object",
"properties": {
"id": {"$ref": "#/$defs/id"},
"region_type": {"type": "string"},
"vn": {"type": "string"},
"fr": {"type": "string"},
"kre": {"type": "string"},
"en": {"type": "string"}
},
"required": ["id"]
},
"group": {
"type": "object",
"properties": {
"id": {"$ref": "#/$defs/id"},
"name": {"$ref": "#/$defs/name"},
"group_description": {"type": "string"},
"region": {"$ref": "#/$defs/name"}
},
"required": ["id", "name", "region"]
},
"user": {
"type": "object",
"properties": {
"id": {"$ref": "#/$defs/id"},
"name": {"$ref": "#/$defs/name"},
"nickname": {"$ref": "#/$defs/name"},
"email": {"$ref": "#/$defs/email"},
"groups": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
}
},
"required": ["id", "name", "groups", "email"]
}
},
"additionalProperties": false
}
+6
View File
@@ -0,0 +1,6 @@
{
"yaml.schemas": {
"file:///home/maurane/Projets/homelab/.vscode/homelab.json": "file:///home/maurane/Projets/homelab/services.yml"
},
"yaml.disableSchemaDetection": [],
}