add: initial services list, authelia initial configuration, up in date prompt ai, json schema for services list
This commit is contained in:
Vendored
+219
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user