Sfoglia il codice sorgente

Add config of multipart threshold for S3 (#11924)

master^2
Yamagishi Kazutoshi 4 anni fa
committed by Eugen Rochko
parent
commit
172eaeba3f
3 ha cambiato i file con 44 aggiunte e 1 eliminazioni
  1. +14
    -0
      .env.production.sample
  2. +1
    -0
      config/initializers/paperclip.rb
  3. +29
    -1
      lib/tasks/mastodon.rake

+ 14
- 0
.env.production.sample Vedi File

@@ -115,6 +115,20 @@ SMTP_FROM_ADDRESS=notifications@example.com
# S3_ENDPOINT= # S3_ENDPOINT=
# S3_SIGNATURE_VERSION= # S3_SIGNATURE_VERSION=


# Google Cloud Storage (optional)
# Use S3 compatible API. Since GCS does not support Multipart Upload,
# increase the value of S3_MULTIPART_THRESHOLD to disable Multipart Upload.
# The attachment host must allow cross origin request - see the description
# above.
# S3_ENABLED=true
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=
# S3_REGION=
# S3_PROTOCOL=https
# S3_HOSTNAME=storage.googleapis.com
# S3_ENDPOINT=https://storage.googleapis.com
# S3_MULTIPART_THRESHOLD=52428801 # 50.megabytes

# Swift (optional) # Swift (optional)
# The attachment host must allow cross origin request - see the description # The attachment host must allow cross origin request - see the description
# above. # above.


+ 1
- 0
config/initializers/paperclip.rb Vedi File

@@ -25,6 +25,7 @@ if ENV['S3_ENABLED'] == 'true'
s3_protocol: s3_protocol, s3_protocol: s3_protocol,
s3_host_name: s3_hostname, s3_host_name: s3_hostname,
s3_headers: { s3_headers: {
'X-Amz-Multipart-Threshold' => ENV.fetch('S3_MULTIPART_THRESHOLD') { 15.megabytes },
'Cache-Control' => 'public, max-age=315576000, immutable', 'Cache-Control' => 'public, max-age=315576000, immutable',
}, },
s3_permissions: ENV.fetch('S3_PERMISSION') { 'public-read' }, s3_permissions: ENV.fetch('S3_PERMISSION') { 'public-read' },


+ 29
- 1
lib/tasks/mastodon.rake Vedi File

@@ -135,7 +135,7 @@ namespace :mastodon do
prompt.say "\n" prompt.say "\n"


if prompt.yes?('Do you want to store uploaded files on the cloud?', default: false) if prompt.yes?('Do you want to store uploaded files on the cloud?', default: false)
case prompt.select('Provider', ['Amazon S3', 'Wasabi', 'Minio'])
case prompt.select('Provider', ['Amazon S3', 'Wasabi', 'Minio', 'Google Cloud Storage'])
when 'Amazon S3' when 'Amazon S3'
env['S3_ENABLED'] = 'true' env['S3_ENABLED'] = 'true'
env['S3_PROTOCOL'] = 'https' env['S3_PROTOCOL'] = 'https'
@@ -217,6 +217,34 @@ namespace :mastodon do
q.required true q.required true
q.modify :strip q.modify :strip
end end
when 'Google Cloud Storage'
env['S3_ENABLED'] = 'true'
env['S3_PROTOCOL'] = 'https'
env['S3_HOSTNAME'] = 'storage.googleapis.com'
env['S3_ENDPOINT'] = 'https://storage.googleapis.com'
env['S3_MULTIPART_THRESHOLD'] = 50.megabytes

env['S3_BUCKET'] = prompt.ask('GCS bucket name:') do |q|
q.required true
q.default "files.#{env['LOCAL_DOMAIN']}"
q.modify :strip
end

env['S3_REGION'] = prompt.ask('GCS region:') do |q|
q.required true
q.default 'us-west1'
q.modify :strip
end

env['AWS_ACCESS_KEY_ID'] = prompt.ask('GCS access key:') do |q|
q.required true
q.modify :strip
end

env['AWS_SECRET_ACCESS_KEY'] = prompt.ask('GCS secret key:') do |q|
q.required true
q.modify :strip
end
end end


if prompt.yes?('Do you want to access the uploaded files from your own domain?') if prompt.yes?('Do you want to access the uploaded files from your own domain?')


Caricamento…
Annulla
Salva