Initial commit
This commit is contained in:
13
attributes/default.rb
Normal file
13
attributes/default.rb
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
node.default['blossom']['repo_url'] = 'https://github.com/67P/blossom-server.git'
|
||||||
|
node.default['blossom']['revision'] = 'master'
|
||||||
|
node.default['blossom']['install_dir'] = '/opt/blossom'
|
||||||
|
node.default['blossom']['user'] = 'blossom'
|
||||||
|
node.default['blossom']['group'] = 'blossom'
|
||||||
|
node.default['blossom']['port'] = 3000
|
||||||
|
node.default['blossom']['host'] = '127.0.0.1'
|
||||||
|
node.default['blossom']['domain'] = 'blossom.example.com'
|
||||||
|
node.default['blossom']['allowed_pubkeys'] = []
|
||||||
|
|
||||||
|
node.default['blossom']['storage']['backend'] = 'local'
|
||||||
|
node.default['blossom']['storage']['local']['dir'] = "/home/#{node['blossom']['user']}/data/blobs"
|
||||||
|
node.default['blossom']['storage']['s3'] = {}
|
||||||
4
metadata.rb
Normal file
4
metadata.rb
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
name 'blossom'
|
||||||
|
description 'Installs/Configures blossom server'
|
||||||
|
version '0.1.0'
|
||||||
|
depends 'deno'
|
||||||
80
recipes/default.rb
Normal file
80
recipes/default.rb
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
include_recipe 'deno'
|
||||||
|
|
||||||
|
user node['blossom']['user'] do
|
||||||
|
home "/home/#{node['blossom']['user']}"
|
||||||
|
manage_home true
|
||||||
|
system true
|
||||||
|
end
|
||||||
|
|
||||||
|
group node['blossom']['group'] do
|
||||||
|
members [node['blossom']['user']]
|
||||||
|
system true
|
||||||
|
end
|
||||||
|
|
||||||
|
directory node['blossom']['install_dir'] do
|
||||||
|
owner node['blossom']['user']
|
||||||
|
group node['blossom']['group']
|
||||||
|
mode '0755'
|
||||||
|
end
|
||||||
|
|
||||||
|
git node['blossom']['install_dir'] do
|
||||||
|
repository node['blossom']['repo_url']
|
||||||
|
revision node['blossom']['revision']
|
||||||
|
action :sync
|
||||||
|
user node['blossom']['user']
|
||||||
|
group node['blossom']['group']
|
||||||
|
notifies :restart, 'service[blossom]', :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
directory "/home/#{node['blossom']['user']}/data" do
|
||||||
|
owner node['blossom']['user']
|
||||||
|
group node['blossom']['group']
|
||||||
|
mode '0750'
|
||||||
|
recursive true
|
||||||
|
end
|
||||||
|
|
||||||
|
template "#{node['blossom']['install_dir']}/config.yml" do
|
||||||
|
source 'config.yml.erb'
|
||||||
|
owner node['blossom']['user']
|
||||||
|
group node['blossom']['group']
|
||||||
|
mode '0640'
|
||||||
|
variables(
|
||||||
|
port: node['blossom']['port'],
|
||||||
|
host: node['blossom']['host'],
|
||||||
|
domain: node['blossom']['domain'],
|
||||||
|
user: node['blossom']['user'],
|
||||||
|
storage_backend: node['blossom']['storage']['backend'],
|
||||||
|
storage_local_dir: node['blossom']['storage']['local']['dir'],
|
||||||
|
storage_s3: node['blossom']['storage']['s3'],
|
||||||
|
allowed_pubkeys: node['blossom']['allowed_pubkeys']
|
||||||
|
)
|
||||||
|
notifies :restart, 'service[blossom]', :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
systemd_unit 'blossom.service' do
|
||||||
|
content({
|
||||||
|
Unit: {
|
||||||
|
Description: 'Blossom Server',
|
||||||
|
After: 'network.target'
|
||||||
|
},
|
||||||
|
Service: {
|
||||||
|
Type: 'simple',
|
||||||
|
User: node['blossom']['user'],
|
||||||
|
Group: node['blossom']['group'],
|
||||||
|
WorkingDirectory: node['blossom']['install_dir'],
|
||||||
|
ExecStart: '/usr/local/bin/deno task start config.yml',
|
||||||
|
Restart: 'on-failure',
|
||||||
|
Environment: [
|
||||||
|
"DENO_DIR=/home/#{node['blossom']['user']}/.cache/deno"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
Install: {
|
||||||
|
WantedBy: 'multi-user.target'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
action [:create]
|
||||||
|
end
|
||||||
|
|
||||||
|
service "blossom" do
|
||||||
|
action [:enable, :start]
|
||||||
|
end
|
||||||
43
templates/default/config.yml.erb
Normal file
43
templates/default/config.yml.erb
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
port: <%= @port %>
|
||||||
|
host: "<%= @host %>"
|
||||||
|
publicDomain: "<%= @domain %>"
|
||||||
|
|
||||||
|
database:
|
||||||
|
path: "/home/<%= @user %>/data/sqlite.db"
|
||||||
|
|
||||||
|
storage:
|
||||||
|
backend: "<%= @storage_backend %>"
|
||||||
|
<% if @storage_backend == 'local' %>
|
||||||
|
local:
|
||||||
|
dir: "<%= @storage_local_dir %>"
|
||||||
|
<% elsif @storage_backend == 's3' %>
|
||||||
|
s3:
|
||||||
|
endpoint: "<%= @storage_s3['endpoint'] %>"
|
||||||
|
region: "<%= @storage_s3['region'] %>"
|
||||||
|
bucket: "<%= @storage_s3['bucket'] %>"
|
||||||
|
accessKey: "<%= @storage_s3['access_key'] %>"
|
||||||
|
secretKey: "<%= @storage_s3['secret_key'] %>"
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
rules:
|
||||||
|
<% if @allowed_pubkeys && !@allowed_pubkeys.empty? %>
|
||||||
|
- type: "*"
|
||||||
|
expiration: "100 years"
|
||||||
|
pubkeys:
|
||||||
|
<% @allowed_pubkeys.each do |pk| %>
|
||||||
|
- "<%= pk %>"
|
||||||
|
<% end %>
|
||||||
|
<% else %>
|
||||||
|
- type: "image/*"
|
||||||
|
expiration: 1 month
|
||||||
|
- type: "video/*"
|
||||||
|
expiration: 1 week
|
||||||
|
- type: "*"
|
||||||
|
expiration: 1 week
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
upload:
|
||||||
|
enabled: true
|
||||||
|
requireAuth: <%= @allowed_pubkeys && !@allowed_pubkeys.empty? ? 'true' : 'false' %>
|
||||||
|
requirePubkeyInRule: <%= @allowed_pubkeys && !@allowed_pubkeys.empty? ? 'true' : 'false' %>
|
||||||
|
maxSize: 5368709120 # 5 GB
|
||||||
Reference in New Issue
Block a user