Compare commits
24
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24e4498f75
|
||
|
|
71a27eb3ca
|
||
|
|
63d6b1eb9c
|
||
|
|
de2c4f27fe
|
||
|
|
956a58a310
|
||
|
|
f453a3004d
|
||
|
|
da969e7709
|
||
|
|
73ef2cb575
|
||
|
|
4fe2f34557
|
||
|
|
4b74dcdf07
|
||
|
|
777efbca4c
|
||
|
|
a8294f25ab
|
||
|
|
f5cd38c457
|
||
|
|
c74d2f1025
|
||
|
|
bdb04e374f
|
||
|
|
051c497054
|
||
|
|
64e1639c06
|
||
|
|
fae8f57298
|
||
|
|
8d0c6bc301
|
||
|
|
80766f2473
|
||
|
|
d9a59e064e
|
||
|
|
16cb333991
|
||
|
|
7386de86d7
|
||
|
|
5ff6046169
|
+1
-1
Submodule nodes updated: 13c12de574...528c84f98f
@@ -87,7 +87,7 @@ node.default['lndhub-go']['branding'] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
node.default['nbxplorer']['repo'] = 'https://github.com/dgarage/NBXplorer'
|
node.default['nbxplorer']['repo'] = 'https://github.com/dgarage/NBXplorer'
|
||||||
node.default['nbxplorer']['revision'] = 'v2.5.26'
|
node.default['nbxplorer']['revision'] = 'v2.6.10'
|
||||||
node.default['nbxplorer']['source_dir'] = '/opt/nbxplorer'
|
node.default['nbxplorer']['source_dir'] = '/opt/nbxplorer'
|
||||||
node.default['nbxplorer']['config_path'] = "/home/#{node['bitcoin']['username']}/.nbxplorer/Main/settings.config"
|
node.default['nbxplorer']['config_path'] = "/home/#{node['bitcoin']['username']}/.nbxplorer/Main/settings.config"
|
||||||
node.default['nbxplorer']['port'] = '24445'
|
node.default['nbxplorer']['port'] = '24445'
|
||||||
@@ -95,7 +95,7 @@ node.default['nbxplorer']['postgres']['database'] = 'nbxplorer'
|
|||||||
node.default['nbxplorer']['postgres']['user'] = 'nbxplorer'
|
node.default['nbxplorer']['postgres']['user'] = 'nbxplorer'
|
||||||
|
|
||||||
node.default['btcpay']['repo'] = 'https://github.com/btcpayserver/btcpayserver'
|
node.default['btcpay']['repo'] = 'https://github.com/btcpayserver/btcpayserver'
|
||||||
node.default['btcpay']['revision'] = 'v2.3.7'
|
node.default['btcpay']['revision'] = 'v2.4.2'
|
||||||
node.default['btcpay']['source_dir'] = '/opt/btcpay'
|
node.default['btcpay']['source_dir'] = '/opt/btcpay'
|
||||||
node.default['btcpay']['config_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/Main/settings.config"
|
node.default['btcpay']['config_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/Main/settings.config"
|
||||||
node.default['btcpay']['log_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/debug.log"
|
node.default['btcpay']['log_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/debug.log"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ bash 'build_btcpay' do
|
|||||||
systemctl stop btcpayserver.service
|
systemctl stop btcpayserver.service
|
||||||
./build.sh
|
./build.sh
|
||||||
EOH
|
EOH
|
||||||
environment "DOTNET_CLI_TELEMETRY_OPTOUT" => 1
|
environment "DOTNET_CLI_TELEMETRY_OPTOUT" => "1"
|
||||||
action :nothing
|
action :nothing
|
||||||
notifies :restart, "service[btcpayserver]", :delayed
|
notifies :restart, "service[btcpayserver]", :delayed
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Recipe:: rtl
|
# Recipe:: rtl
|
||||||
#
|
#
|
||||||
|
|
||||||
node.override["kosmos_nodejs"]["version"] = "18.20.8"
|
node.override["kosmos_nodejs"]["version"] = "22.23.1"
|
||||||
include_recipe 'kosmos-nodejs'
|
include_recipe 'kosmos-nodejs'
|
||||||
|
|
||||||
app_name = "rtl"
|
app_name = "rtl"
|
||||||
|
|||||||
@@ -2,6 +2,20 @@
|
|||||||
|
|
||||||
This file is used to list changes made in each version of the kosmos_gitea cookbook.
|
This file is used to list changes made in each version of the kosmos_gitea cookbook.
|
||||||
|
|
||||||
|
# 0.2.2
|
||||||
|
|
||||||
|
- Add `config.yaml` for the gitea actions runner, enabling the built-in cache
|
||||||
|
server (listening on the Docker bridge gateway `172.17.0.1`) and bumping
|
||||||
|
`runner.capacity` to 2 for concurrent job execution. Each runner gets a unique
|
||||||
|
cache port derived from `cache_base_port` (8088) + its index in the runners
|
||||||
|
data bag.
|
||||||
|
- Set `container.network` to a user-defined Docker bridge network
|
||||||
|
(`gitea-actions`, subnet `172.20.0.0/16`) so job containers get DNS resolution
|
||||||
|
for service containers (e.g. `redis`) while keeping the cache server reachable
|
||||||
|
at the network gateway `172.20.0.1`.
|
||||||
|
- Open the cache port in the firewall for Docker bridge traffic
|
||||||
|
(`172.20.0.0/16`), fixing `Request timeout` errors from `actions/cache`.
|
||||||
|
|
||||||
# 0.1.0
|
# 0.1.0
|
||||||
|
|
||||||
Initial release.
|
Initial release.
|
||||||
|
|||||||
@@ -25,3 +25,17 @@ node.default["gitea"]["config"] = {
|
|||||||
|
|
||||||
node.default["gitea"]["runner"]["version"] = "2.0.0"
|
node.default["gitea"]["runner"]["version"] = "2.0.0"
|
||||||
node.default["gitea"]["runner"]["checksum"] = "447156b33407ee045409f5552bd4a188a315cdd4085b4b498d8d4a9ad26c9f73"
|
node.default["gitea"]["runner"]["checksum"] = "447156b33407ee045409f5552bd4a188a315cdd4085b4b498d8d4a9ad26c9f73"
|
||||||
|
node.default["gitea"]["runner"]["cache_base_port"] = 8088
|
||||||
|
node.default["gitea"]["runner"]["config"] = {
|
||||||
|
"runner" => {
|
||||||
|
"capacity" => 2
|
||||||
|
},
|
||||||
|
"container" => {
|
||||||
|
"network" => "gitea-actions" # User-defined bridge network: provides DNS for service containers
|
||||||
|
},
|
||||||
|
"cache" => {
|
||||||
|
"enabled" => true,
|
||||||
|
"host" => "172.20.0.1" # Gateway of the gitea-actions network, reachable from job containers
|
||||||
|
# Port is set per-runner (cache_base_port + index) in the runner recipe
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# Increase if you have very long User-Agent strings
|
||||||
|
map_hash_bucket_size 256;
|
||||||
|
|
||||||
|
# Bot user agents
|
||||||
|
map $http_user_agent $bot_name {
|
||||||
|
default "";
|
||||||
|
~*ClaudeBot "claude";
|
||||||
|
~*Sogou "sogou";
|
||||||
|
~*meta-externalagent "meta-externalagent";
|
||||||
|
# add more as needed
|
||||||
|
}
|
||||||
|
|
||||||
|
# Decide the rate-limit key (per-IP for each bot in this example)
|
||||||
|
map $bot_name $bot_limit_key {
|
||||||
|
default "";
|
||||||
|
"claude" $binary_remote_addr;
|
||||||
|
"sogou" $binary_remote_addr;
|
||||||
|
"meta-externalagent" $binary_remote_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Shared memory zone – only non-empty keys are counted
|
||||||
|
limit_req_zone $bot_limit_key zone=bots:20m rate=240r/m; # 4r/s per IP+bot
|
||||||
|
|
||||||
|
# Status code returned when the limit is exceeded
|
||||||
|
limit_req_status 429;
|
||||||
@@ -4,7 +4,7 @@ maintainer_email 'ops@kosmos.org'
|
|||||||
license 'MIT'
|
license 'MIT'
|
||||||
description 'Installs/configures Gitea'
|
description 'Installs/configures Gitea'
|
||||||
long_description 'Installs/configures Gitea'
|
long_description 'Installs/configures Gitea'
|
||||||
version '0.2.1'
|
version '0.2.2'
|
||||||
chef_version '>= 14.0'
|
chef_version '>= 14.0'
|
||||||
|
|
||||||
depends "firewall"
|
depends "firewall"
|
||||||
|
|||||||
@@ -17,6 +17,14 @@ tls_cert_for domain do
|
|||||||
action :create
|
action :create
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Slow down requests from bots
|
||||||
|
cookbook_file "#{node["openresty"]["dir"]}/conf.d/rate_limits.conf" do
|
||||||
|
source "rate_limits.conf"
|
||||||
|
owner "root"
|
||||||
|
group "root"
|
||||||
|
mode "0644"
|
||||||
|
end
|
||||||
|
|
||||||
openresty_site domain do
|
openresty_site domain do
|
||||||
template "nginx_conf_web.erb"
|
template "nginx_conf_web.erb"
|
||||||
variables server_name: domain,
|
variables server_name: domain,
|
||||||
|
|||||||
@@ -35,14 +35,39 @@ directory "#{working_directory}/runners" do
|
|||||||
mode "0700"
|
mode "0700"
|
||||||
end
|
end
|
||||||
|
|
||||||
runners.each do |runner|
|
execute "create_gitea_actions_network" do
|
||||||
|
command "docker network create --subnet 172.20.0.0/16 gitea-actions"
|
||||||
|
not_if "docker network inspect gitea-actions"
|
||||||
|
end
|
||||||
|
|
||||||
|
runners.each_with_index do |runner, index|
|
||||||
runner_name = "gitea-runner-#{runner["org"]}"
|
runner_name = "gitea-runner-#{runner["org"]}"
|
||||||
runner_dir = "#{working_directory}/runners/#{runner["org"]}"
|
runner_dir = "#{working_directory}/runners/#{runner["org"]}"
|
||||||
|
cache_port = node["gitea"]["runner"]["cache_base_port"] + index
|
||||||
|
|
||||||
directory runner_dir do
|
directory runner_dir do
|
||||||
mode "0700"
|
mode "0700"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
runner_config = node["gitea"]["runner"]["config"].to_hash
|
||||||
|
runner_config["cache"] = runner_config["cache"].merge("port" => cache_port)
|
||||||
|
|
||||||
|
firewall_rule "runner_cache_#{runner["org"]}" do
|
||||||
|
command :allow
|
||||||
|
port cache_port
|
||||||
|
protocol :tcp
|
||||||
|
source "172.20.0.0/16"
|
||||||
|
end
|
||||||
|
|
||||||
|
template "#{runner_dir}/config.yaml" do
|
||||||
|
source "runner.config.yaml.erb"
|
||||||
|
mode "0640"
|
||||||
|
owner "root"
|
||||||
|
group "root"
|
||||||
|
variables(config: runner_config)
|
||||||
|
notifies :restart, "service[#{runner_name}]", :delayed
|
||||||
|
end
|
||||||
|
|
||||||
bash "register_#{runner["org"]}_runner" do
|
bash "register_#{runner["org"]}_runner" do
|
||||||
cwd runner_dir
|
cwd runner_dir
|
||||||
code <<-EOF
|
code <<-EOF
|
||||||
@@ -67,7 +92,7 @@ gitea_runner register \
|
|||||||
Type: "simple",
|
Type: "simple",
|
||||||
WorkingDirectory: runner_dir,
|
WorkingDirectory: runner_dir,
|
||||||
Environment: "HOME=/root",
|
Environment: "HOME=/root",
|
||||||
ExecStart: "/usr/local/bin/gitea_runner daemon",
|
ExecStart: "/usr/local/bin/gitea_runner daemon --config #{runner_dir}/config.yaml",
|
||||||
ExecStartPre: "/bin/sleep 3", # Wait for Gitea's API to be up when restarting at the same time
|
ExecStartPre: "/bin/sleep 3", # Wait for Gitea's API to be up when restarting at the same time
|
||||||
Restart: "always",
|
Restart: "always",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ server {
|
|||||||
|
|
||||||
proxy_intercept_errors on;
|
proxy_intercept_errors on;
|
||||||
|
|
||||||
|
# Rate limit for bots. Defined in /etc/openresty/conf.d/rate_limits.conf
|
||||||
|
limit_req zone=bots burst=10; # allow a larger spike for asset bursts
|
||||||
|
|
||||||
location ~ ^/(avatars|repo-avatars)/.*$ {
|
location ~ ^/(avatars|repo-avatars)/.*$ {
|
||||||
proxy_buffers 1024 8k;
|
proxy_buffers 1024 8k;
|
||||||
proxy_pass http://_gitea_web;
|
proxy_pass http://_gitea_web;
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
<%= @config.to_yaml.sub(/^---\n/, '') %>
|
||||||
@@ -89,6 +89,11 @@ jobs = node["kosmos_prometheus"]["jobs"].merge(
|
|||||||
"query" => "role:garage_node",
|
"query" => "role:garage_node",
|
||||||
"port" => 3903
|
"port" => 3903
|
||||||
},
|
},
|
||||||
|
# strfry relay metrics
|
||||||
|
"strfry" => {
|
||||||
|
"query" => "role:strfry",
|
||||||
|
"port" => 7777
|
||||||
|
},
|
||||||
}.transform_values do |config|
|
}.transform_values do |config|
|
||||||
{
|
{
|
||||||
"targets" => search(:node, config["query"]).map do |n|
|
"targets" => search(:node, config["query"]).map do |n|
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ server {
|
|||||||
proxy_pass http://_substr;
|
proxy_pass http://_substr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /metrics {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
|||||||
+1
-1
Submodule site-cookbooks/strfry updated: 2c6e64d231...9c04b393ec
Reference in New Issue
Block a user