{"id":367,"date":"2017-04-26T12:07:09","date_gmt":"2017-04-26T03:07:09","guid":{"rendered":"https:\/\/fsck.jp\/?p=367"},"modified":"2018-05-31T09:01:53","modified_gmt":"2018-05-31T00:01:53","slug":"%e3%81%95%e3%81%8f%e3%82%89%e3%81%aevpscentos7%e3%81%a7mastodon","status":"publish","type":"post","link":"https:\/\/fsck.jp\/?p=367","title":{"rendered":"CentOS7\u3067mastodon\u81ea\u5206\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u7acb\u3066\u308b"},"content":{"rendered":"<p>VPS\u4e0a\u306b\u81ea\u5206\u7528\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u7acb\u3066\u3066\u307f\u305f\u3002<\/p>\n<h3>1. docker\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n<p>docker\u3092\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002\u30ec\u30dd\u30b8\u30c8\u30ea\u3068\u3057\u3066\u306f\u3001docker\u306e\u516c\u5f0f\u3092\u4f7f\u3046\u3002<br \/>\n<code>$ sudo yum install yum-utils<br \/>\n$ sudo yum-config-manager --add-repo https:\/\/download.docker.com\/linux\/centos\/docker-ce.repo<br \/>\n$ sudo yum-config-manager --disable docker-ce-edge<br \/>\n$ sudo yum-config-manager --disable docker-ce-stable<\/code><\/p>\n<p>docker-ce-edge\u30ec\u30dd\u30b8\u30c8\u30ea\u3067\u6700\u65b0\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u540d\u3092\u53d6\u5f97\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002<br \/>\n<code>$ yum --enablerepo=docker-ce-edge list docker-ce.x86_64 --showduplicates | sort -r<br \/>\ndocker-ce.x86_64             17.05.0.ce-1.el7.centos             docker-ce-edge<br \/>\ndocker-ce.x86_64             17.04.0.ce-1.el7.centos             docker-ce-edge<br \/>\n$ sudo yum --enablerepo=docker-ce-edge install docker-ce-17.05.0.ce-1.el7.centos<\/code><\/p>\n<p>docker\u30c7\u30fc\u30e2\u30f3\u3092\u8d77\u52d5\u3059\u308b\u3002<br \/>\n<code>$ sudo systemctl enable docker<br \/>\n$ sudo systemctl start docker<\/code><\/p>\n<p>docker-compose\u3092github\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\/usr\/bin\u4ee5\u4e0b\u306b\u914d\u7f6e\u3059\u308b\u3002<br \/>\n<code>$ sudo -i<br \/>\n# curl -L https:\/\/github.com\/docker\/compose\/releases\/download\/1.12.0\/docker-compose-`uname -s`-`uname -m` > \/usr\/bin\/docker-compose<br \/>\n# chmod +x \/usr\/bin\/docker-compose<br \/>\n$ exit<\/code><\/p>\n<h3>2. mastodon<\/h3>\n<p>mastodon\u306e\u30bd\u30fc\u30b9\u30c4\u30ea\u30fc\u3092\u7528\u610f\u3059\u308b\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001mastodon\u7528\u306e\u4f5c\u696d\u7528\u4e00\u822c\u30e6\u30fc\u30b6\u3092\u8ffd\u52a0\u3059\u308b\u3002<br \/>\n<code>$ sudo useradd mastodon<br \/>\n$ sudo passwd mastodon<br \/>\n$ sudo usermod -aG docker mastodon<\/code><\/p>\n<p>mastodon\u306e\u30bd\u30fc\u30b9\u30c4\u30ea\u30fc\u3092\/home\/mastodon\/live\u306b\u5c55\u958b\u3059\u308b\u3002\u3053\u308c\u4ee5\u964d\u306fmastodon\u30e6\u30fc\u30b6\u3067\u4f5c\u696d\u3059\u308b\u3002<br \/>\n<code>$ sudo -i -u mastodon<br \/>\n$ git clone https:\/\/github.com\/tootsuite\/mastodon.git live<br \/>\n$ cd live<br \/>\n$ git tag<br \/>\n\u30d0\u30fc\u30b8\u30e7\u30f3\u30bf\u30b0\u306e\u4e00\u89a7\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u3001\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u30bf\u30b0\u3092\u9078\u3076\u3002<br \/>\n$ git checkout v1.3.3<\/code><\/p>\n<p>\u30bd\u30fc\u30b9\u30c4\u30ea\u30fc\u306b\u4ed8\u5c5e\u3057\u3066\u3044\u308b\u3001docker\u30b3\u30f3\u30c6\u30ca\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb docker-compose.yml \u3092\u7de8\u96c6\u3059\u308b\u3002<br \/>\n<code>$ vi docker-compose.yml<\/code><\/p>\n<pre>\r\nversion: '2'\r\nservices:\r\n\r\n  db:\r\n    restart: always\r\n    image: postgres:alpine\r\n### Uncomment to enable DB persistance\r\n    volumes: \u2190\u3053\u3053\u306e\u884c\u982d\u30b3\u30e1\u30f3\u30c8\u8a18\u53f7\u3092\u5916\u3059\r\n      - .\/postgres:\/var\/lib\/postgresql\/data \u2190\u3053\u3053\u306e\u884c\u982d\u30b3\u30e1\u30f3\u30c8\u8a18\u53f7\u3092\u5916\u3059\r\n\r\n  redis:\r\n    restart: always\r\n    image: redis:alpine\r\n### Uncomment to enable REDIS persistance\r\n    volumes: \u2190\u3053\u3053\u306e\u884c\u982d\u30b3\u30e1\u30f3\u30c8\u8a18\u53f7\u3092\u5916\u3059\r\n      - .\/redis:\/data \u2190\u3053\u3053\u306e\u884c\u982d\u30b3\u30e1\u30f3\u30c8\u8a18\u53f7\u3092\u5916\u3059\r\n\r\n  web:\r\n    restart: always\r\n    build: .\r\n    image: gargron\/mastodon\r\n    env_file: .env.production\r\n    command: bundle exec rails s -p 3000 -b '0.0.0.0'\r\n    ports:\r\n      - \"3000:3000\"\r\n    links: \u2190depends_on\u3092links\u306b\u5909\u66f4\u3059\u308b\r\n      - db\r\n      - redis\r\n    volumes:\r\n      - .\/public\/assets:\/mastodon\/public\/assets\r\n      - .\/public\/system:\/mastodon\/public\/system\r\n\r\n  streaming:\r\n    restart: always\r\n    build: .\r\n    image: gargron\/mastodon\r\n    env_file: .env.production\r\n    command: npm run start\r\n    ports:\r\n      - \"4000:4000\"\r\n    links: \u2190depends_on\u3092links\u306b\u5909\u66f4\u3059\u308b\r\n      - db\r\n      - redis\r\n\r\n  sidekiq:\r\n    restart: always\r\n    build: .\r\n    image: gargron\/mastodon\r\n    env_file: .env.production\r\n    command: bundle exec sidekiq -q default -q mailers -q pull -q push\r\n    links: \u2190depends_on\u3092links\u306b\u5909\u66f4\u3059\u308b\r\n      - db\r\n      - redis\r\n    volumes:\r\n      - .\/public\/system:\/mastodon\/public\/system<\/pre>\n<p>\u6b21\u306b\u3001.env.production\u3092\u7de8\u96c6\u3059\u308b\u3002<br \/>\n<code>$ cp -p .env.production.sample .env.production<br \/>\n$ vi .env.production<\/code><br \/>\n\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u884c\u3092\u7de8\u96c6\u3059\u308b\u3002<\/p>\n<pre>\r\nDB_USER=mastodon \u2190\u3053\u306e\u5f8cPostgreSQL\u3067\u8a2d\u5b9a\u3059\u308b\r\nDB_NAME=mastodon \u2190\u540c\u4e0a\r\nDB_PASS=password \u2190\u540c\u4e0a\r\nLOCAL_DOMAIN=mastodon.example.com \u2190mastodon\u30b5\u30fc\u30d0\u306eFQDN\r\nSMTP_SERVER=mail.example.com \u2190\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u306e\u30db\u30b9\u30c8\u540d\r\nSMTP_PORT=587 \u2190\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u306e\u30dd\u30fc\u30c8 SMTP AUTH\u304c\u4f7f\u3048\u308b\u30dd\u30fc\u30c8\u3092\u6307\u5b9a\r\nSMTP_LOGIN=mastodon \u2190SMTP AUTH\u306e\u30e6\u30fc\u30b6\u540d\r\nSMTP_PASSWORD=password \u2190SMTP AUTH\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\r\nSMTP_FROM_ADDRESS=postmaster@example.com<\/pre>\n<p>docker\u30b3\u30f3\u30c6\u30ca\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30d3\u30eb\u30c9\u3059\u308b\u3002\u3053\u3053\u306f\u6642\u9593\u304c\u304b\u304b\u308b\u3002<br \/>\n<code>$ docker-compose build<\/code><\/p>\n<p>\u6b21\u306b\u3001\u540c\u3058\u30b3\u30de\u30f3\u30c9\u30923\u56de\u5b9f\u884c\u3057\u3066\u30ad\u30fc\u3092\u4f5c\u6210\u3059\u308b\u3002<br \/>\n<code>$ docker-compose run --rm web rake secret<br \/>\n3d3748d778c215f269c18c4c46dc2fb94da50ec569b2bc0c593353b5f54f2f4b6e4307978bc0304042f8d086716f1896046751d4b0fc8b9420a79c33454caa81<br \/>\n$ docker-compose run --rm web rake secret<br \/>\n5377ae140e0c1eaf857b5423067c4295029c9cdb23feefa9f382c7aa94753f224ed097834f15447c419d31065ce0dc816ef6efeec594de8996b776910b2e3326<br \/>\n$ docker-compose run --rm web rake secret<br \/>\n772fab57e3e71fa6c57f14e8ab42e986daf0aaf67a1ebe469d04fc3187f989ec77bd8bebdc08b62c4a456e8851755140000286c8babc1b8e4c9203782aadd6f2<\/code><\/p>\n<p>\u51fa\u529b\u3055\u308c\u305f\u9375\u6587\u5b57\u5217\u3092\u3001.env.production\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u8a18\u8ff0\u3059\u308b\u3002<br \/>\n<code>$ vi .env.production<\/code><\/p>\n<pre>\r\nPAPERCLIP_SECRET=3d3748d778c215f269c18c4c46dc2fb94da50ec569b2bc0c593353b5f54f2f4b6e4307978bc0304042f8d086716f1896046751d4b0fc8b9420a79c33454caa81\r\nSECRET_KEY_BASE=5377ae140e0c1eaf857b5423067c4295029c9cdb23feefa9f382c7aa94753f224ed097834f15447c419d31065ce0dc816ef6efeec594de8996b776910b2e3326\r\nOTP_SECRET=772fab57e3e71fa6c57f14e8ab42e986daf0aaf67a1ebe469d04fc3187f989ec77bd8bebdc08b62c4a456e8851755140000286c8babc1b8e4c9203782aadd6f2<\/pre>\n<p>\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3059\u308b\u3002<br \/>\n<code>$ docker-compose up -d<\/code><\/p>\n<p>db\u30b3\u30f3\u30c6\u30ca\u5185\u306ePostgreSQL\u306b\u3001\u30e6\u30fc\u30b6\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3002<br \/>\n<code>$ docker exec -it live_db_1 bash<br \/>\n# su - postgres<br \/>\n43e296a2871c:~$ createuser -P mastodon<br \/>\nEnter password for new role: password<br \/>\nEnter it again: password<br \/>\n43e296a2871c:~$ createdb mastodon -O mastodon<br \/>\n43e296a2871c:~$ exit<br \/>\n# exit<\/code><\/p>\n<p>db\u30b3\u30f3\u30c6\u30ca\u306e\u5909\u66f4\u90e8\u5206\u3092\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3059\u308b\u3002\u307e\u305f\u3001assets\u30d5\u30a1\u30a4\u30eb\uff08\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\uff09\u3092\u751f\u6210\u3059\u308b\u3002<br \/>\n<code>$ docker-compose run --rm web rails db:migrate<br \/>\n$ docker-compose run --rm web rails assets:precompile<\/code><\/p>\n<p>\u3044\u3063\u305f\u3093\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3059\u308b\u3002<br \/>\n<code>$ docker-compose stop<br \/>\n$ docker-compose up -d<\/code><\/p>\n<h3>3. certbot (letsencrypt)<\/h3>\n<p>Let&#8217;s Encrypt\u30d7\u30ed\u30b8\u30a7\u30af\u30c8CA\u306b\u3001\u8a3c\u660e\u66f8\u3092\u767a\u884c\u3057\u3066\u3082\u3089\u3046\u3002<\/p>\n<p>certbot\u30bd\u30fc\u30b9\u30c4\u30ea\u30fc\u3092\u3001\/opt\u4ee5\u4e0b\u306b\u5c55\u958b\u3057\u3066certbot-auto\u3092\u5b9f\u884c\u3059\u308b\u3002<br \/>\n<code>$ sudo -i<br \/>\n# cd \/opt<br \/>\n# chgrp wheel .<br \/>\n# chmod g+w .<br \/>\n# exit<br \/>\n$ cd \/opt<br \/>\n$ git clone https:\/\/github.com\/certbot\/certbot<br \/>\n$ cd certbot<br \/>\n$ .\/certbot-auto certonly -n --standalone --agree-tos -m \u7ba1\u7406\u8005\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 -d www.example.com,mail.example.com,mastodon.example.com<\/code><\/p>\n<p>\u4eca\u56de\u306f\u76f4\u63a5\u95a2\u4fc2\u306a\u3044\u304c\u3001-d\u30aa\u30d7\u30b7\u30e7\u30f3\u3067 SubjectAltName\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u4ed6\u306e\u30d0\u30fc\u30c1\u30e3\u30eb\u30db\u30b9\u30c8\u3068\u8a3c\u660e\u66f8\u3092\u5171\u7528\u3059\u308b\u3002<\/p>\n<h3>4. nginx \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8a2d\u5b9a<\/h3>\n<p>nginx\u306fpuma+rails\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u517c\u3001\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u81ea\u524d\u3067\u8fd4\u3059Web\u30b5\u30fc\u30d0\u3068\u306a\u308b\u3002<\/p>\n<p>nginx \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u7528 repo \u3092\u8ffd\u52a0\u3059\u308b\u3002<br \/>\n<code>$ sudo vi \/etc\/yum.repos.d\/nginx.repo<\/code><\/p>\n<pre>\r\n[nginx]\r\nname=nginx repo\r\nbaseurl=http:\/\/nginx.org\/packages\/centos\/$releasever\/$basearch\/\r\ngpgcheck=0\r\nenabled=0<\/pre>\n<p>nginx\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002<br \/>\n<code>$ sudo yum --enablerepo=nginx install nginx<\/code><\/p>\n<p>nginx\u306e\u8a2d\u5b9a<br \/>\n<code>$ sudo vi \/etc\/nginx\/conf.d\/mastodon.conf<\/code><\/p>\n<pre>\r\nmap $http_upgrade $connection_upgrade {\r\n  default upgrade;\r\n  ''      close;\r\n}\r\n\r\nserver {\r\n  listen 80;\r\n  listen [::]:80;\r\n  server_name mastodon.example.com;\r\n  location \/ { return 301 https:\/\/$host$request_uri; }\r\n}\r\n\r\nserver {\r\n  listen 443 ssl;\r\n  listen [::]:443 ssl;\r\n  server_name mastodon.example.com;\r\n\r\n  ssl_protocols TLSv1.2;\r\n  ssl_ciphers EECDH+AESGCM:EECDH+AES;\r\n  ssl_ecdh_curve prime256v1;\r\n  ssl_prefer_server_ciphers on;\r\n  ssl_session_cache shared:SSL:10m;\r\n\r\n  ssl_certificate     \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\r\n  ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\r\n  ssl_dhparam         \/etc\/pki\/tls\/dhparam.pem;\r\n\r\n  keepalive_timeout    70;\r\n  sendfile             on;\r\n  client_max_body_size 0;\r\n\r\n  root \/home\/mastodon\/live\/public;\r\n\r\n  gzip on;\r\n  gzip_disable \"msie6\";\r\n  gzip_vary on;\r\n  gzip_proxied any;\r\n  gzip_comp_level 6;\r\n  gzip_buffers 16 8k;\r\n  gzip_http_version 1.1;\r\n  gzip_types text\/plain text\/css application\/json application\/javascript text\/xml application\/xml application\/xml+rss text\/javascript;\r\n\r\n  add_header Strict-Transport-Security \"max-age=31536000\";\r\n\r\n  location \/ {\r\n    try_files $uri @proxy;\r\n  }\r\n\r\n  location \/assets {\r\n    add_header Cache-Control \"public, max-age=31536000, immutable\";\r\n  }\r\n\r\n  location @proxy {\r\n    proxy_set_header Host $host;\r\n    proxy_set_header X-Real-IP $remote_addr;\r\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n    proxy_set_header X-Forwarded-Proto https;\r\n    proxy_set_header Proxy \"\";\r\n    proxy_pass_header Server;\r\n\r\n    proxy_pass http:\/\/127.0.0.1:3000;\r\n    proxy_buffering off;\r\n    proxy_redirect off;\r\n    proxy_http_version 1.1;\r\n    proxy_set_header Upgrade $http_upgrade;\r\n    proxy_set_header Connection $connection_upgrade;\r\n\r\n    tcp_nodelay on;\r\n  }\r\n\r\n  location \/api\/v1\/streaming {\r\n    proxy_set_header Host $host;\r\n    proxy_set_header X-Real-IP $remote_addr;\r\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n    proxy_set_header X-Forwarded-Proto https;\r\n    proxy_set_header Proxy \"\";\r\n\r\n    proxy_pass http:\/\/localhost:4000;\r\n    proxy_buffering off;\r\n    proxy_redirect off;\r\n    proxy_http_version 1.1;\r\n    proxy_set_header Upgrade $http_upgrade;\r\n    proxy_set_header Connection $connection_upgrade;\r\n\r\n    tcp_nodelay on;\r\n  }\r\n\r\n  error_page 500 501 502 503 504 \/500.html;\r\n}<\/pre>\n<p>nginx\u3092\u8d77\u52d5\u3059\u308b\u3002<br \/>\n<code>$ sudo openssl dhparam 2048 -out \/etc\/pki\/tls\/dhparam.pem<br \/>\n$ sudo systemctl enable nginx<br \/>\n$ sudo systemctl restart nginx<\/code><\/p>\n<h3>5. \u8d77\u52d5\u5f8c\u306e\u8a2d\u5b9a<\/h3>\n<p>mastodon\u306e\u753b\u9762\u306bWeb\u30d6\u30e9\u30a6\u30b6\u3067\u30a2\u30af\u30bb\u30b9\u3057\u3001\u6700\u521d\u306e\u30e6\u30fc\u30b6\u3092\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p>mastodon\u4e0a\u306e\u6700\u521d\u306e\u30e6\u30fc\u30b6\u3092\u4f5c\u6210\u3057\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u5316\u3059\u308b<br \/>\n<code>$ docker-compose run --rm web rails mastodon:make_admin USERNAME=firstusername<\/code><\/p>\n<p>\u3055\u3089\u306b\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u30e2\u30fc\u30c9\u5316\u3057\u3066\u3001\u307b\u304b\u306e\u30e6\u30fc\u30b6\u3067\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u304f\u3059\u308b<br \/>\n<code>$ vi .env.production<br \/>\nSINGLE_USER_MODE=true<\/code><\/p>\n<p>\u8a2d\u5b9a\u3092\u53cd\u6620\u3059\u308b\u305f\u3081\u3001\u518d\u8d77\u52d5\u3059\u308b\u3002<br \/>\n<code>$ docker-compose stop<br \/>\n$ docker-compose up -d<\/code><\/p>\n<p>systemd\u8d77\u52d5\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3001VPS\u3092\u518d\u8d77\u52d5\u3057\u305f\u3068\u304d\u3082\u81ea\u52d5\u3067mastodon\u7528\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3002<br \/>\n<code>$ sudo vi \/etc\/systemd\/system\/mastodon.service<\/code><\/p>\n<pre>\r\n[Unit]\r\nDescription=Mastodon\r\nRequires=docker.service\r\nAfter=network.target\r\nAfter=docker.service\r\n\r\n[Service]\r\nType=simple\r\nUser=mastodon\r\nGroup=mastodon\r\nWorkingDirectory=\/home\/mastodon\/live\r\nExecStart=\/usr\/bin\/docker-compose up\r\nExecStop=\/usr\/bin\/docker-compose stop\r\n\r\n[Install]\r\nWantedBy=multi-user.target<\/pre>\n<p>systemctl\u3092\u4f7f\u3063\u3066mastodon\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3057\u3066\u307f\u308b\u3002<br \/>\n<code>$ sudo systemctl enable mastodon<br \/>\n$ sudo systemctl stop mastodon<br \/>\n$ sudo systemctl start mastodon<\/code><\/p>\n<p>\u4ee5\u4e0a\u3067\u5b8c\u4e86\u3067\u3042\u308b\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>VPS\u4e0a\u306b\u81ea\u5206\u7528\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u7acb\u3066\u3066\u307f\u305f\u3002 1. docker\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb docker\u3092\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002\u30ec\u30dd\u30b8\u30c8\u30ea\u3068\u3057\u3066\u306f\u3001docker\u306e\u516c\u5f0f\u3092\u4f7f\u3046\u3002 $ sudo yum install yum-ut [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20,13,14],"tags":[],"_links":{"self":[{"href":"https:\/\/fsck.jp\/index.php?rest_route=\/wp\/v2\/posts\/367"}],"collection":[{"href":"https:\/\/fsck.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fsck.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fsck.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fsck.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=367"}],"version-history":[{"count":0,"href":"https:\/\/fsck.jp\/index.php?rest_route=\/wp\/v2\/posts\/367\/revisions"}],"wp:attachment":[{"href":"https:\/\/fsck.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fsck.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fsck.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}