diff options
Diffstat (limited to 'boxfile.yml')
-rw-r--r-- | boxfile.yml | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/boxfile.yml b/boxfile.yml new file mode 100644 index 000000000..65f5f6c8c --- /dev/null +++ b/boxfile.yml @@ -0,0 +1,158 @@ +run.config: + engine: ruby + engine.config: + runtime: ruby-2.4.1 + + extra_packages: + # basic servers: + - nginx + - nodejs + + # for images: + - ImageMagick + + # for videos: + - ffmpeg3 + + # to prep the .env file + - gettext-tools + + cache_dirs: + - node_modules + + extra_path_dirs: + - node_modules/.bin + + build_triggers: + - .ruby-version + - Gemfile + - Gemfile.lock + - package.json + - yarn.lock + + extra_steps: + - cp .env.nanobox .env + - gem install bundler + - bundle config build.nokogiri --with-iconv-dir=/data/ --with-zlib-dir=/data/ + - bundle config build.nokogumbo --with-iconv-dir=/data/ --with-zlib-dir=/data/ + - bundle install --clean + - yarn + + fs_watch: true + +deploy.config: + extra_steps: + - NODE_ENV=production bundle exec rake assets:precompile + - "[ -r /app/.env.production ] || sed 's/LOCAL_HTTPS=.*/LOCAL_HTTPS=true/i' /app/.env.nanobox > /app/.env.production" + transform: + - envsubst < /app/.env.production > /tmp/.env.production && mv /tmp/.env.production /app/.env.production + - |- + if [ -z "$LOCAL_DOMAIN" ] + then + . /app/.env.production + export LOCAL_DOMAIN + fi + erb /app/nanobox/nginx-web.conf.erb > /app/nanobox/nginx-web.conf + erb /app/nanobox/nginx-stream.conf.erb > /app/nanobox/nginx-stream.conf + - touch /app/log/production.log + before_live: + web.web: + - bundle exec rake db:migrate:setup + +web.web: + start: + nginx: nginx -c /app/nanobox/nginx-web.conf + rails: bundle exec puma -C /app/config/puma.rb + + routes: + - '/' + + writable_dirs: + - tmp + + log_watch: + rails: 'log/production.log' + + network_dirs: + data.storage: + - public/system + +web.stream: + start: + nginx: nginx -c /app/nanobox/nginx-stream.conf + node: yarn run start + + routes: + - '/api/v1/streaming*' + # Somehow we're getting requests for scheme://domain//api/v1/streaming* - match those, too + - '//api/v1/streaming*' + + writable_dirs: + - tmp + +worker.sidekiq: + start: bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push -L /app/log/sidekiq.log + + writable_dirs: + - tmp + + log_watch: + rails: 'log/production.log' + sidekiq: 'log/sidekiq.log' + + network_dirs: + data.storage: + - public/system + + cron: + - id: generate_static_gifs + schedule: '*/15 * * * *' + command: 'bundle exec rake mastodon:maintenance:add_static_avatars' + + - id: update_counter_caches + schedule: '50 * * * *' + command: 'bundle exec rake mastodon:maintenance:update_counter_caches' + + # runs feeds:clear, media:clear, users:clear, and push:refresh + - id: do_daily_tasks + schedule: '00 00 * * *' + command: 'bundle exec rake mastodon:daily' + + - id: clear_silenced_media + schedule: '10 00 * * *' + command: 'bundle exec rake mastodon:media:remove_silenced' + + - id: clear_remote_media + schedule: '20 00 * * *' + command: 'bundle exec rake mastodon:media:remove_remote' + + - id: clear_unfollowed_subs + schedule: '30 00 * * *' + command: 'bundle exec rake mastodon:push:clear' + + - id: send_digest_emails + schedule: '00 20 * * *' + command: 'bundle exec rake mastodon:emails:digest' + + # The following two tasks can be uncommented to automatically open and close + # registrations on a schedule. The format of 'schedule' is a standard cron + # time expression: minute hour day month day-of-week; search for "cron + # time expressions" for more info on how to set these up. The examples here + # open registration only from 8 am to 4 pm, server time. + # + # - id: open_registrations + # schedule: '00 08 * * *' + # command: 'bundle exec rake mastodon:settings:open_registrations' + # + # - id: close_registrations + # schedule: '00 16 * * *' + # command: 'bundle exec rake mastodon:settings:close_registrations' + +data.db: + image: nanobox/postgresql:9.5 + +data.redis: + image: nanobox/redis:3.0 + +data.storage: + image: nanobox/unfs:0.9 |