From a29db9142adc48848226d9d2d8b287d42ea4504d Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 05:46:44 +0100 Subject: [PATCH 01/12] Grooming. --- src/gen-config.cr | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index 5cc597c..1b7a42d 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -7,6 +7,18 @@ def sanitize_path(path) path.gsub /\/\/+/, "/" end +class Service + def to_genconfig + Hash(String, String?).new.tap do |entry| + entry["name"] = name + entry["id"] = full_id + entry["environment"] = environment.name + entry["root"] = root + entry["domain"] = domain + end + end +end + module GenConfig # FIXME: The fuck has this become. alias Variables = @@ -96,14 +108,7 @@ class GenConfig::Context next unless provider - # FIXME: deduplicate - providers[token] = Hash(String, String?).new.tap do |entry| - entry["name"] = provider.name - entry["id"] = provider.full_id - entry["environment"] = provider.environment.name - entry["root"] = provider.root - entry["domain"] = provider.domain - end + providers[token] = provider.to_genconfig end options["providers"] = providers @@ -118,15 +123,7 @@ class GenConfig::Context t == token && service.is_id?(provider) end .size.>(0)) - .map do |consumer| - Hash(String, String?).new.tap do |entry| - entry["name"] = consumer.name - entry["id"] = consumer.id - entry["environment"] = consumer.environment.name - entry["root"] = consumer.root - entry["domain"] = consumer.domain - end - end + .map &.to_genconfig end options["consumers"] = consumers end From 00f9a2b228827921306c76730859a41d907041ed Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 06:06:18 +0100 Subject: [PATCH 02/12] Grooming. --- src/gen-config.cr | 9 +-------- src/service/service.cr | 10 ++++++++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index 1b7a42d..e7db7d2 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -116,14 +116,7 @@ class GenConfig::Context service.provides.each do |provider_data| token = provider_data.token - # FIXME: definitely unreadable - consumers[token] = Service.all - .select( - &.providers.select do |t, provider| - t == token && service.is_id?(provider) - end - .size.>(0)) - .map &.to_genconfig + consumers[token] = service.get_consumers(token).map &.to_genconfig end options["consumers"] = consumers end diff --git a/src/service/service.cr b/src/service/service.cr index 7a4aa3a..b8813f1 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -441,6 +441,16 @@ class Service def get_default_provider(token) : String? @environment.get_provider(token) || Environment.root.get_provider(token) end + + def consumes?(token, origin) + providers.select do |_token, provider| + token == _token && origin.is_id?(provider) + end.size > 0 + end + + def get_consumers(token) + Service.all.select(&.consumes?(token, self)) + end end From 5b6e3e64fdacafb796f06c84646a2ebfa8079344 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 06:08:08 +0100 Subject: [PATCH 03/12] Debug message removed. --- src/gen-config.cr | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index e7db7d2..451d0c9 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -90,7 +90,6 @@ class GenConfig::Context raise Exception.new "Could not find template to generate file ('#{target}')." end - pp ENV["SERVICE_ID"]? if service_id = ENV["SERVICE_ID"]? if service = Service.get_by_id service_id environment = service.environment From 358c7441e6698146a199cac1dcc7e8ae023fce99 Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Sun, 27 Oct 2019 22:13:40 +0100 Subject: [PATCH 04/12] first attempt at adding the nginx service --- services/nginx.spec | 7 +++++++ services/www.spec | 5 +++++ src/gen-config.cr | 1 + templates/nginx.conf.j2 | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 services/nginx.spec create mode 100644 services/www.spec create mode 100644 templates/nginx.conf.j2 diff --git a/services/nginx.spec b/services/nginx.spec new file mode 100644 index 0000000..0938bde --- /dev/null +++ b/services/nginx.spec @@ -0,0 +1,7 @@ +command: nginx -c ${SERVICE_ROOT}/nginx.conf +provides: www + +#%directory ${SERVICE_ROOT}/ +# name: working directory + +%configuration nginx.conf ${SERVICE_ROOT}/nginx.conf diff --git a/services/www.spec b/services/www.spec new file mode 100644 index 0000000..4362cdb --- /dev/null +++ b/services/www.spec @@ -0,0 +1,5 @@ +command: echo "coucou" +consumes: www + +%directory ${SERVICE_ROOT}/ + name: data directory diff --git a/src/gen-config.cr b/src/gen-config.cr index cb6079a..4acad10 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -51,6 +51,7 @@ class GenConfig::Context Environment.load ENVIRONMENTS_DIRECTORY ServiceDefinition.load SERVICES_DIRECTORY Service.load RC_DIRECTORY + Environment.load ENVIRONMENTS_DIRECTORY target_file = File.open target, "w" diff --git a/templates/nginx.conf.j2 b/templates/nginx.conf.j2 new file mode 100644 index 0000000..119b48d --- /dev/null +++ b/templates/nginx.conf.j2 @@ -0,0 +1,36 @@ + +# worker_processes 1; +daemon off; + +worker_rlimit_nofile 1024; +events { + worker_connections 800; +} + +http { + error_log /var/log/{{ id | replace("/", "_") }}_error.log warn; + access_log /var/log/{{ id | replace("/", "_") }}_access.log; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + index index.html index.htm index.xhtml; + + fastcgi_param HTTP_PROXY ""; + + keepalive_timeout 65; + + server_tokens off; + + {% for user in consumers["www"] %} + server { + listen {{ port(user.id) }} ; + listen [::]:{{ port(user.id) }} ; + server_name {{ user.domain }} ; + + location / { + root {{ user.root }} ; + } + } + {% endfor %} + +} From 9a74130efa0271cc59339f55090b5db60b40e723 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Sun, 27 Oct 2019 23:02:45 +0100 Subject: [PATCH 05/12] wip, stuff --- services/nginx.spec | 4 ++-- src/gen-config.cr | 28 ++++++++++++++++++++++------ src/service/environment.cr | 1 - src/service/service.cr | 2 ++ 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/services/nginx.spec b/services/nginx.spec index 0938bde..2d6fbf5 100644 --- a/services/nginx.spec +++ b/services/nginx.spec @@ -1,7 +1,7 @@ command: nginx -c ${SERVICE_ROOT}/nginx.conf provides: www -#%directory ${SERVICE_ROOT}/ -# name: working directory +%directory ${SERVICE_ROOT}/ + name: working directory %configuration nginx.conf ${SERVICE_ROOT}/nginx.conf diff --git a/src/gen-config.cr b/src/gen-config.cr index 4acad10..5cc597c 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -8,10 +8,13 @@ def sanitize_path(path) end module GenConfig + # FIXME: The fuck has this become. alias Variables = String | Array(String) | Array(Variables) | Hash(String, String) | Hash(String, Variables) | + Array(Hash(String, String?)) | + Hash(String, String?) | Crinja::Callable::Instance def self.parse_options(unparsed : Array(String)) @@ -51,7 +54,6 @@ class GenConfig::Context Environment.load ENVIRONMENTS_DIRECTORY ServiceDefinition.load SERVICES_DIRECTORY Service.load RC_DIRECTORY - Environment.load ENVIRONMENTS_DIRECTORY target_file = File.open target, "w" @@ -94,10 +96,13 @@ class GenConfig::Context next unless provider - providers[token] = Hash(String, String).new.tap do |entry| + # FIXME: deduplicate + providers[token] = Hash(String, String?).new.tap do |entry| entry["name"] = provider.name entry["id"] = provider.full_id entry["environment"] = provider.environment.name + entry["root"] = provider.root + entry["domain"] = provider.domain end end options["providers"] = providers @@ -106,11 +111,22 @@ class GenConfig::Context service.provides.each do |provider_data| token = provider_data.token - consumers[token] = Service.all.select do |s2| - s2.providers.each do |t2, id| - token == t2 && id == service.id + # FIXME: definitely unreadable + consumers[token] = Service.all + .select( + &.providers.select do |t, provider| + t == token && service.is_id?(provider) + end + .size.>(0)) + .map do |consumer| + Hash(String, String?).new.tap do |entry| + entry["name"] = consumer.name + entry["id"] = consumer.id + entry["environment"] = consumer.environment.name + entry["root"] = consumer.root + entry["domain"] = consumer.domain + end end - end.map &.full_id end options["consumers"] = consumers end diff --git a/src/service/environment.cr b/src/service/environment.cr index 14d5071..2e1a53d 100644 --- a/src/service/environment.cr +++ b/src/service/environment.cr @@ -8,7 +8,6 @@ class Environment getter name : String getter type : Type = Type::Prefix - getter domain_name : String? getter pre_start_hooks = Array(ServiceDefinition::Hook).new # The place we’ll put services’ data and configuration. diff --git a/src/service/service.cr b/src/service/service.cr index ee605c0..7a4aa3a 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -54,6 +54,8 @@ class Service @reference = ServiceDefinition.get assignments["name"].as_s + @domain = assignments["domain"]?.try &.as_s + env = assignments["environment"]?.try &.as_s @environment = if env.nil? || env == "" Environment.root From c80360e3800bb6840e08e23ddf4074a39724b08b Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 05:46:44 +0100 Subject: [PATCH 06/12] Grooming. --- src/gen-config.cr | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index 5cc597c..1b7a42d 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -7,6 +7,18 @@ def sanitize_path(path) path.gsub /\/\/+/, "/" end +class Service + def to_genconfig + Hash(String, String?).new.tap do |entry| + entry["name"] = name + entry["id"] = full_id + entry["environment"] = environment.name + entry["root"] = root + entry["domain"] = domain + end + end +end + module GenConfig # FIXME: The fuck has this become. alias Variables = @@ -96,14 +108,7 @@ class GenConfig::Context next unless provider - # FIXME: deduplicate - providers[token] = Hash(String, String?).new.tap do |entry| - entry["name"] = provider.name - entry["id"] = provider.full_id - entry["environment"] = provider.environment.name - entry["root"] = provider.root - entry["domain"] = provider.domain - end + providers[token] = provider.to_genconfig end options["providers"] = providers @@ -118,15 +123,7 @@ class GenConfig::Context t == token && service.is_id?(provider) end .size.>(0)) - .map do |consumer| - Hash(String, String?).new.tap do |entry| - entry["name"] = consumer.name - entry["id"] = consumer.id - entry["environment"] = consumer.environment.name - entry["root"] = consumer.root - entry["domain"] = consumer.domain - end - end + .map &.to_genconfig end options["consumers"] = consumers end From 36829e8664305bb2e4742d6c7f4c8a29915a4335 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 06:06:18 +0100 Subject: [PATCH 07/12] Grooming. --- src/gen-config.cr | 9 +-------- src/service/service.cr | 10 ++++++++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index 1b7a42d..e7db7d2 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -116,14 +116,7 @@ class GenConfig::Context service.provides.each do |provider_data| token = provider_data.token - # FIXME: definitely unreadable - consumers[token] = Service.all - .select( - &.providers.select do |t, provider| - t == token && service.is_id?(provider) - end - .size.>(0)) - .map &.to_genconfig + consumers[token] = service.get_consumers(token).map &.to_genconfig end options["consumers"] = consumers end diff --git a/src/service/service.cr b/src/service/service.cr index 7a4aa3a..b8813f1 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -441,6 +441,16 @@ class Service def get_default_provider(token) : String? @environment.get_provider(token) || Environment.root.get_provider(token) end + + def consumes?(token, origin) + providers.select do |_token, provider| + token == _token && origin.is_id?(provider) + end.size > 0 + end + + def get_consumers(token) + Service.all.select(&.consumes?(token, self)) + end end From 0f89791a765dd56b05b632cc4d6624cb0271765e Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 06:08:08 +0100 Subject: [PATCH 08/12] Debug message removed. --- src/gen-config.cr | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index e7db7d2..451d0c9 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -90,7 +90,6 @@ class GenConfig::Context raise Exception.new "Could not find template to generate file ('#{target}')." end - pp ENV["SERVICE_ID"]? if service_id = ENV["SERVICE_ID"]? if service = Service.get_by_id service_id environment = service.environment From 86f3294689faf44bcc42bc227b303ffe7a25dd1a Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 06:17:45 +0100 Subject: [PATCH 09/12] gen-config: 'service' replaces several variables. --- src/gen-config.cr | 7 +------ templates/gitea.cfg.j2 | 18 +++++++++--------- templates/nginx.conf.j2 | 4 ++-- templates/postgresql.conf.j2 | 4 ++-- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index 451d0c9..455278e 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -94,12 +94,7 @@ class GenConfig::Context if service = Service.get_by_id service_id environment = service.environment - options["id"] = service.full_id - options["name"] = service.name - options["service_root"] = service.root - - options["environment"] = environment.name - options["environment_root"] = environment.root + options["service"] = service.to_genconfig providers = Hash(String, Variables).new service.providers.each do |token, provider| diff --git a/templates/gitea.cfg.j2 b/templates/gitea.cfg.j2 index 202fcac..59b6b26 100644 --- a/templates/gitea.cfg.j2 +++ b/templates/gitea.cfg.j2 @@ -16,25 +16,25 @@ SECRET_KEY = vPFgSqRMIe7Dzk4frRM4UA3CETedL8agK7x6IQFQt9YfRPiQGhQbYAGfyan71iU [database] DB_TYPE = postgres HOST = 127.0.0.1:{{ port(providers.postgresql) }} -NAME = {{ id | replace("/", "_") }}_db -USER = {{ id | replace("/", "_") }} -PASSWD = {{ random_password( id ) }} +NAME = {{ service.id | replace("/", "_") }}_db +USER = {{ service.id | replace("/", "_") }} +PASSWD = {{ random_password( service.id ) }} SSL_MODE = disable CHARSET = utf8 -PATH = /srv/{{ environment }}/gitea/data/gitea.db +PATH = {{ service.root }}/data/gitea.db [repository] -ROOT = /srv/{{ environment }}/gitea/repositories +ROOT = {{ service.root }}/repositories [server] SSH_DOMAIN = localhost DOMAIN = localhost -HTTP_PORT = {{ port(id) }} -ROOT_URL = http://localhost:{{ port(id) }}/ +HTTP_PORT = {{ port(service.id) }} +ROOT_URL = http://localhost:{{ port(service.id) }}/ DISABLE_SSH = false SSH_PORT = 22 LFS_START_SERVER = true -LFS_CONTENT_PATH = /srv/{{ environment }}/gitea/data/lfs +LFS_CONTENT_PATH = {{ service.root }}/data/lfs LFS_JWT_SECRET = nUIANTsStEelCeOo7SFTcJllpJ6I8DXNr7duUgGMXfI OFFLINE_MODE = false @@ -67,6 +67,6 @@ PROVIDER = file [log] MODE = file LEVEL = info -ROOT_PATH = /srv/{{ environment }}/gitea/log +ROOT_PATH = {{ service.root }}/log diff --git a/templates/nginx.conf.j2 b/templates/nginx.conf.j2 index 119b48d..6f132ed 100644 --- a/templates/nginx.conf.j2 +++ b/templates/nginx.conf.j2 @@ -8,8 +8,8 @@ events { } http { - error_log /var/log/{{ id | replace("/", "_") }}_error.log warn; - access_log /var/log/{{ id | replace("/", "_") }}_access.log; + error_log /var/log/{{ service.id | replace("/", "_") }}_error.log warn; + access_log /var/log/{{ service.id | replace("/", "_") }}_access.log; include /etc/nginx/mime.types; default_type application/octet-stream; diff --git a/templates/postgresql.conf.j2 b/templates/postgresql.conf.j2 index 10c165c..d4ecebf 100644 --- a/templates/postgresql.conf.j2 +++ b/templates/postgresql.conf.j2 @@ -60,7 +60,7 @@ # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) -port = {{port(id)}} +port = {{port(service.id)}} max_connections = 100 # (change requires restart) #superuser_reserved_connections = 3 # (change requires restart) #unix_socket_directories = '/run/postgresql' # comma-separated list of directories @@ -687,4 +687,4 @@ default_text_search_config = 'pg_catalog.english' # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------ -# Add settings for extensions here \ No newline at end of file +# Add settings for extensions here From 3a3db5bde1da05fce32953331b20ebfe087f8150 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 06:37:57 +0100 Subject: [PATCH 10/12] Grooming. --- src/gen-config.cr | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/gen-config.cr b/src/gen-config.cr index 455278e..97a6d90 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -26,6 +26,7 @@ module GenConfig Array(String) | Array(Variables) | Hash(String, String) | Hash(String, Variables) | Array(Hash(String, String?)) | + Hash(String, Array(Hash(String, String?))) | Hash(String, String?) | Crinja::Callable::Instance @@ -96,23 +97,20 @@ class GenConfig::Context options["service"] = service.to_genconfig - providers = Hash(String, Variables).new - service.providers.each do |token, provider| + options["providers"] = service.providers.compact_map do |token, provider| provider = Service.get_by_id provider next unless provider - providers[token] = provider.to_genconfig + provider.to_genconfig end - options["providers"] = providers - consumers = Hash(String, Variables).new - service.provides.each do |provider_data| - token = provider_data.token - - consumers[token] = service.get_consumers(token).map &.to_genconfig - end - options["consumers"] = consumers + options["consumers"] = service.provides + .map(&.token) + .map{ |token| + {token, service.get_consumers(token).map &.to_genconfig} + } + .to_h end end From 55dbfa79999d21abb381d36861721dae5ef784ce Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 13:22:15 +0100 Subject: [PATCH 11/12] Some services now require a domain name to be provided. --- services/www.spec | 1 + src/service.cr | 20 +++++++++++++++++--- src/service/service.cr | 9 ++++++++- src/service/service_definition.cr | 14 ++++++++++++++ 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/services/www.spec b/services/www.spec index 4362cdb..d0a4ec1 100644 --- a/services/www.spec +++ b/services/www.spec @@ -1,5 +1,6 @@ command: echo "coucou" consumes: www +requires-domain: true %directory ${SERVICE_ROOT}/ name: data directory diff --git a/src/service.cr b/src/service.cr index 3acfbc1..23da9ae 100644 --- a/src/service.cr +++ b/src/service.cr @@ -44,6 +44,7 @@ commands = CommandsList.new commands.push "add", "Adds a service to an environment." do |args| providers = Hash(String, String).new + domain = nil environment, service = Service.parse_id args[0] @@ -52,15 +53,25 @@ commands.push "add", "Adds a service to an environment." do |args| match = arg.match /(.*)=(.*)/ - if match.nil? + if match.nil? || match.size < 2 raise ::Service::Exception.new "usage: service add " next end - providers[match[1]] = match[2] + _, key, value = match + + if key == "domain" + domain = value + else + providers[key] = value + end end Service.new(service, environment).tap do |service| + if domain + service.domain = domain + end + service.consumes.each do |token| provider = providers[token.token]? @@ -76,7 +87,10 @@ commands.push "add", "Adds a service to an environment." do |args| service.providers[token.token] = provider end - pp! service.providers + + if service.requires_domain && !service.domain + raise Service::Exception.new "'#{service.name}' requires a domain= parameter to be provided!" + end end.write RC_DIRECTORY end diff --git a/src/service/service.cr b/src/service/service.cr index b8813f1..dac4699 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -19,7 +19,7 @@ class Service getter environment : Environment getter providers = ProvidersList.new - getter domain : String? + property domain : String? # The place we’ll store configuration and data. @root : String? @@ -81,6 +81,10 @@ class Service file << "root: #{@root}" end + if @domain + file << "domain: #{@domain}" + end + @providers.each do |token, provider| file << "%consumes #{token}" file << " from: #{provider}" @@ -120,6 +124,9 @@ class Service def consumes @reference.consumes end + def requires_domain + @reference.requires_domain + end def root @root || "#{@environment.root}/#{name}" diff --git a/src/service/service_definition.cr b/src/service/service_definition.cr index 2e53fb8..bf1e53e 100644 --- a/src/service/service_definition.cr +++ b/src/service/service_definition.cr @@ -49,6 +49,8 @@ class ServiceDefinition getter pre_start_hooks : Array(Hook) getter provides : Array(Provides) + getter requires_domain = false + def initialize(@name, specs : SpecParser) sections = specs.sections specs = specs.assignments @@ -60,6 +62,18 @@ class ServiceDefinition @consumes = specs["consumes"]?.try &.as_a_or_s.map { |x| Consumes.new x } || Array(Consumes).new @environment_variables = specs["environment-variables"]?.try &.as_a_or_s || Array(String).new + # FIXME: as_b? + requires_domain = specs["requires-domain"]?.try &.as_s + case requires_domain + when nil + when "true", "yes" + @requires_domain = true + when "false", "no" + @requires_domain = false + else + STDERR.puts "warning: definition '#{@name}' has a 'requires-domain' entry with an invalid value" + end + @pre_start_hooks = Array(Hook).new sections.each do |section| From df718d2a9ebf7fad149d1fe81a13a016fe69c26e Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 28 Oct 2019 13:24:41 +0100 Subject: [PATCH 12/12] gitea gets require-domain and its domain used in templates. --- services/gitea.spec | 1 + templates/gitea.cfg.j2 | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/services/gitea.spec b/services/gitea.spec index 858882d..7a5cdef 100644 --- a/services/gitea.spec +++ b/services/gitea.spec @@ -1,5 +1,6 @@ command: gitea -C . -w . -c ./custom/conf/app.ini consumes: postgresql +requires-domain: true %directory ${SERVICE_ROOT}/custom/conf name: working directory diff --git a/templates/gitea.cfg.j2 b/templates/gitea.cfg.j2 index 59b6b26..abd3273 100644 --- a/templates/gitea.cfg.j2 +++ b/templates/gitea.cfg.j2 @@ -27,10 +27,10 @@ PATH = {{ service.root }}/data/gitea.db ROOT = {{ service.root }}/repositories [server] -SSH_DOMAIN = localhost -DOMAIN = localhost +SSH_DOMAIN = {{ service.domain }} +DOMAIN = {{ service.domain }} HTTP_PORT = {{ port(service.id) }} -ROOT_URL = http://localhost:{{ port(service.id) }}/ +ROOT_URL = http://{{ service.domain }}:{{ port(service.id) }}/ DISABLE_SSH = false SSH_PORT = 22 LFS_START_SERVER = true