{"id":26,"date":"2026-05-21T21:20:24","date_gmt":"2026-05-21T12:20:24","guid":{"rendered":"https:\/\/krsw.info\/?p=26"},"modified":"2026-05-21T21:24:00","modified_gmt":"2026-05-21T12:24:00","slug":"peertube-documentation%e3%81%ae%e3%80%8cinstall-or-upgrade-peertube%e3%80%8d%e3%82%92%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%81%ab%e7%bf%bb%e8%a8%b32026%e5%b9%b45%e6%9c%8821%e6%97%a5","status":"publish","type":"post","link":"https:\/\/krsw.info\/?p=26","title":{"rendered":"PeerTube Documentation\u306e\u300cInstall or upgrade PeerTube\u300d\u3092\u65e5\u672c\u8a9e\u306b\u7ffb\u8a33(2026\u5e745\u670821\u65e5)"},"content":{"rendered":"\n<!-- ========================================================\n     PeerTube \u5b8c\u5168\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff08\u65e5\u672c\u8a9e\u8a33\uff09\u7d71\u5408\u7248\n     WordPress\u306e\u300c\u30c6\u30ad\u30b9\u30c8\uff08HTML\uff09\u300d\u30bf\u30d6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\n     ======================================================== -->\n\n<style>\n\/* \u2500\u2500 \u30d9\u30fc\u30b9 \u2500\u2500 *\/\n.pt-doc { font-family: \"Helvetica Neue\", \"Hiragino Sans\", \"Yu Gothic\", sans-serif; color: #1a1a1a; line-height: 1.8; }\n\n\/* \u2500\u2500 \u76ee\u6b21 \u2500\u2500 *\/\n.pt-toc { background: #f8f8f6; border-left: 4px solid #f26522; padding: 20px 24px; margin: 0 0 40px; border-radius: 0 6px 6px 0; }\n.pt-toc h2 { margin: 0 0 12px; font-size: 15px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #555; }\n.pt-toc ol { margin: 0; padding-left: 20px; }\n.pt-toc li { margin: 4px 0; font-size: 14px; }\n.pt-toc a { color: #f26522; text-decoration: none; }\n.pt-toc a:hover { text-decoration: underline; }\n.pt-toc .pt-toc-sub { padding-left: 16px; margin-top: 4px; list-style-type: lower-latin; }\n\n\/* \u2500\u2500 \u30bb\u30af\u30b7\u30e7\u30f3\u533a\u5207\u308a \u2500\u2500 *\/\n.pt-section { margin: 60px 0 0; }\n.pt-section-header { display: flex; align-items: center; gap: 14px; border-bottom: 2px solid #f26522; padding-bottom: 10px; margin-bottom: 28px; }\n.pt-section-header .pt-section-icon { font-size: 26px; line-height: 1; flex-shrink: 0; }\n.pt-section-header h2 { margin: 0; font-size: 22px; font-weight: 700; color: #1a1a1a; }\n\n\/* \u2500\u2500 \u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3 \u2500\u2500 *\/\n.pt-subsection { margin: 36px 0; }\n.pt-subsection h3 { font-size: 17px; font-weight: 700; color: #333; border-left: 3px solid #f26522; padding-left: 10px; margin: 0 0 14px; }\n.pt-subsection h4 { font-size: 15px; font-weight: 700; color: #444; margin: 24px 0 10px; padding-left: 6px; border-left: 2px solid #ddd; }\n\n\/* \u2500\u2500 \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af \u2500\u2500 *\/\n.pt-code { background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 6px; font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", monospace; font-size: 13px; line-height: 1.7; overflow-x: auto; margin: 12px 0 20px; white-space: pre; }\n\n\/* \u2500\u2500 \u30a4\u30f3\u30e9\u30a4\u30f3\u30b3\u30fc\u30c9 \u2500\u2500 *\/\n.pt-doc code { background: #f0ede8; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 13px; font-family: \"SFMono-Regular\", Consolas, monospace; }\n\n\/* \u2500\u2500 \u6ce8\u610f\u66f8\u304d\u30dc\u30c3\u30af\u30b9 \u2500\u2500 *\/\n.pt-notice { display: flex; gap: 12px; padding: 14px 18px; border-radius: 6px; margin: 16px 0 20px; font-size: 14px; line-height: 1.7; }\n.pt-notice .pt-notice-icon { font-size: 18px; flex-shrink: 0; margin-top: 1px; }\n.pt-notice p { margin: 0; }\n.pt-notice.warn { background: #fff8e6; border-left: 4px solid #f0a500; }\n.pt-notice.info { background: #e8f4ff; border-left: 4px solid #3a9ad9; }\n.pt-notice.tip  { background: #edfaf2; border-left: 4px solid #27ae60; }\n.pt-notice.danger { background: #fff0f0; border-left: 4px solid #e74c3c; }\n\n\/* \u2500\u2500 \u30b9\u30c6\u30c3\u30d7\u30d0\u30c3\u30b8 \u2500\u2500 *\/\n.pt-step { display: flex; align-items: flex-start; gap: 14px; margin: 18px 0; }\n.pt-step-num { background: #f26522; color: #fff; font-size: 12px; font-weight: 700; min-width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; }\n.pt-step-body { flex: 1; }\n.pt-step-body p { margin: 0 0 8px; }\n\n\/* \u2500\u2500 \u5927\u30bb\u30af\u30b7\u30e7\u30f3\u9593\u306e\u533a\u5207\u308a\u7dda \u2500\u2500 *\/\n.pt-divider { border: none; border-top: 1px solid #e0ddd8; margin: 56px 0 0; }\n\n\/* \u2500\u2500 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u30d0\u30c3\u30b8 \u2500\u2500 *\/\n.pt-badge { display: inline-block; background: #f0ede8; color: #555; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 4px; margin-right: 6px; vertical-align: middle; }\n<\/style>\n\n<div class=\"pt-doc\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     \u30d8\u30c3\u30c0\u30fc\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<p>\u8907\u6570\u306e\u5c0f\u898f\u6a21\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u9023\u5408\u30fb\u76f8\u4e92\u904b\u7528\u3067\u304d\u308b\u5206\u6563\u578b\u52d5\u753b\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u53c2\u52a0\u3057\u307e\u3057\u3087\u3046\u3002\u52d5\u753b\u30af\u30ea\u30a8\u30a4\u30bf\u30fc\u3092\u30d5\u30a9\u30ed\u30fc\u3057\u305f\u308a\u3001\u81ea\u5206\u3067\u52d5\u753b\u3092\u6295\u7a3f\u3057\u305f\u308a\u3002\u7279\u5b9a\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u7e1b\u3089\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u6240\u6709\u3059\u308b\u3001\u5e83\u544a\u306a\u3057\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002<\/p>\n<p>\u2764 <a href=\"https:\/\/framasoft.org\/\" target=\"_blank\" rel=\"noopener\">Framasoft<\/a> \u304c\u958b\u767a\u30fb\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     \u76ee\u6b21\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-toc\">\n  <h2>\u76ee\u6b21<\/h2>\n  <ol>\n    <li><a href=\"#pt-intro\">\u306f\u3058\u3081\u306b<\/a><\/li>\n    <li><a href=\"#pt-contribute\">\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8<\/a><\/li>\n    <li><a href=\"#pt-own-platform\">\u72ec\u81ea\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u69cb\u7bc9<\/a><\/li>\n    <li><a href=\"#pt-docs\">\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4e00\u89a7<\/a><\/li>\n    <li><a href=\"#pt-production\">\u672c\u756a\u74b0\u5883\u30ac\u30a4\u30c9\uff08\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff09<\/a>\n      <ol class=\"pt-toc-sub\">\n        <li><a href=\"#pt-prod-deps\">\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8<\/a><\/li>\n        <li><a href=\"#pt-prod-user\">\u30e6\u30fc\u30b6\u30fc\u4f5c\u6210<\/a><\/li>\n        <li><a href=\"#pt-prod-db\">\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a<\/a><\/li>\n        <li><a href=\"#pt-prod-dir\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u6e96\u5099<\/a><\/li>\n        <li><a href=\"#pt-prod-config\">PeerTube \u8a2d\u5b9a<\/a><\/li>\n        <li><a href=\"#pt-prod-nginx\">\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc<\/a><\/li>\n        <li><a href=\"#pt-prod-systemd\">systemd<\/a><\/li>\n        <li><a href=\"#pt-prod-admin\">\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8<\/a><\/li>\n      <\/ol>\n    <\/li>\n    <li><a href=\"#pt-upgrade\">\u672c\u756a\u74b0\u5883\u30ac\u30a4\u30c9\uff08\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\uff09<\/a><\/li>\n    <li><a href=\"#pt-docker\">Docker \u30ac\u30a4\u30c9<\/a>\n      <ol class=\"pt-toc-sub\">\n        <li><a href=\"#pt-docker-install\">\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/a><\/li>\n        <li><a href=\"#pt-docker-upgrade\">\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/a><\/li>\n        <li><a href=\"#pt-docker-pg\">PostgreSQL \u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/a><\/li>\n        <li><a href=\"#pt-docker-build\">\u30d3\u30eb\u30c9<\/a><\/li>\n      <\/ol>\n    <\/li>\n    <li><a href=\"#pt-unofficial\">\u975e\u516c\u5f0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5<\/a>\n      <ol class=\"pt-toc-sub\">\n        <li><a href=\"#pt-git\">Git<\/a><\/li>\n        <li><a href=\"#pt-arch\">ArchLinux<\/a><\/li>\n        <li><a href=\"#pt-centos\">CentOS \/ Fedora \/ RHEL<\/a><\/li>\n        <li><a href=\"#pt-yunohost\">YunoHost<\/a><\/li>\n        <li><a href=\"#pt-k8s\">Kubernetes<\/a><\/li>\n        <li><a href=\"#pt-shell-docker\">\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8 + Docker Compose<\/a><\/li>\n        <li><a href=\"#pt-ansible\">Ansible Playbook<\/a><\/li>\n      <\/ol>\n    <\/li>\n  <\/ol>\n<\/div>\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     1. \u306f\u3058\u3081\u306b\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-intro\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\ud83c\udfac<\/span>\n    <h2>\u306f\u3058\u3081\u306b<\/h2>\n  <\/div>\n\n  <p>PeerTube \u306f\u3001YouTube\u30fbDailymotion\u30fbVimeo \u306a\u3069\u306e\u30c7\u30fc\u30bf\u3084\u6ce8\u76ee\u3092\u4e00\u5143\u7ba1\u7406\u3059\u308b\u65e2\u5b58\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3078\u306e\u4ee3\u66ff\u3068\u3057\u3066\u958b\u767a\u3055\u308c\u305f\u3001\u7121\u6599\u30fb\u5206\u6563\u578b\u30fb\u30d5\u30a7\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3\u5bfe\u5fdc\u306e\u52d5\u753b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002<\/p>\n\n  <p>\u8a73\u3057\u304f\u306f\u3053\u3061\u3089\uff1a<\/p>\n  <ul>\n    <li>PeerTube \u3068\u306f\u4f55\u304b\u3001\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u3092\u8aac\u660e\u3057\u305f<a href=\"https:\/\/framatube.org\/videos\/watch\/217eefeb-883d-45be-b7fc-a788ad8507d3\" target=\"_blank\" rel=\"noopener\">2\u5206\u9593\u306e\u7d39\u4ecb\u52d5\u753b<\/a>\uff08PeerTube \u4e0a\u3067\u30db\u30b9\u30c8\uff09<\/li>\n    <li>PeerTube \u516c\u5f0f\u30db\u30fc\u30e0\u30da\u30fc\u30b8\uff1a<a href=\"https:\/\/joinpeertube.org\/\" target=\"_blank\" rel=\"noopener\">joinpeertube.org<\/a><\/li>\n    <li>\u30c7\u30e2\u74b0\u5883\uff1a\n      <ul>\n        <li><a href=\"https:\/\/peertube.cpy.re\/\" target=\"_blank\" rel=\"noopener\">peertube.cpy.re<\/a>\uff08\u5b89\u5b9a\u7248\uff09<\/li>\n        <li><a href=\"https:\/\/peertube2.cpy.re\/\" target=\"_blank\" rel=\"noopener\">peertube2.cpy.re<\/a>\uff08\u30ca\u30a4\u30c8\u30ea\u30fc\u30d3\u30eb\u30c9\uff09<\/li>\n        <li><a href=\"https:\/\/peertube3.cpy.re\/\" target=\"_blank\" rel=\"noopener\">peertube3.cpy.re<\/a>\uff08\u30ea\u30ea\u30fc\u30b9\u5019\u88dc\u7248\uff09<\/li>\n      <\/ul>\n    <\/li>\n    <li>PeerTube \u3068 <a href=\"https:\/\/github.com\/tootsuite\/mastodon\" target=\"_blank\" rel=\"noopener\">Mastodon<\/a>\uff08\u5206\u6563\u578b Twitter \u4ee3\u66ff\uff09\u9593\u306e\u901a\u4fe1\u3092\u5b9f\u6f14\u3057\u305f<a href=\"https:\/\/peertube.cpy.re\/videos\/watch\/da2b08d4-a242-4170-b32a-4ec8cbdca701\" target=\"_blank\" rel=\"noopener\">\u30c7\u30e2\u52d5\u753b<\/a><\/li>\n  <\/ul>\n<\/div>\n\n<hr class=\"pt-divider\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     2. \u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-contribute\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\ud83d\ude4c<\/span>\n    <h2>\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8\uff08\u8ca2\u732e\uff09<\/h2>\n  <\/div>\n\n  <p>\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u3067\u306a\u304f\u3066\u3082\u8ca2\u732e\u3067\u304d\u307e\u3059\uff01\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u306e\u63d0\u4f9b\u3001\u30d0\u30b0\u5831\u544a\u3001\u7ffb\u8a33\u306e\u30b5\u30dd\u30fc\u30c8\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u57f7\u7b46\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u5f62\u3067\u53c2\u52a0\u3067\u304d\u307e\u3059\u3002<a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/.github\/CONTRIBUTING.md\" target=\"_blank\" rel=\"noopener\">\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8\u30ac\u30a4\u30c9<\/a>\u3092\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u59cb\u3081\u308b\u307e\u30672\u5206\u3082\u304b\u304b\u308a\u307e\u305b\u3093 \ud83d\ude09<\/p>\n\n  <p>\u4ee5\u4e0b\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30c1\u30e3\u30f3\u30cd\u30eb\u306b\u3082\u6c17\u8efd\u306b\u53c2\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n  <ul>\n    <li><strong>\u30c1\u30e3\u30c3\u30c8\uff1a<\/strong>\n      <ul>\n        <li>Matrix\uff08IRC\u30fb<a href=\"https:\/\/discord.gg\/wj8DDUT\" target=\"_blank\" rel=\"noopener\">Discord<\/a> \u3068\u30d6\u30ea\u30c3\u30b8\u6e08\u307f\uff09\uff1a<a href=\"https:\/\/matrix.to\/#\/#peertube:matrix.org\" target=\"_blank\" rel=\"noopener\">#peertube:matrix.org<\/a><\/li>\n        <li>IRC\uff1a<a href=\"https:\/\/web.libera.chat\/#peertube\" target=\"_blank\" rel=\"noopener\">irc.libera.chat \u306e #peertube\uff08\u30dd\u30fc\u30c8 6697\uff09<\/a><\/li>\n      <\/ul>\n    <\/li>\n    <li><strong>\u30d5\u30a9\u30fc\u30e9\u30e0\uff1a<\/strong>\n      <ul>\n        <li>Framacolibri\uff1a<a href=\"https:\/\/framacolibri.org\/c\/peertube\" target=\"_blank\" rel=\"noopener\">https:\/\/framacolibri.org\/c\/peertube<\/a><\/li>\n      <\/ul>\n    <\/li>\n  <\/ul>\n  <p>\u8cea\u554f\u3084\u30a2\u30a4\u30c7\u30a2\u304c\u3042\u308c\u3070\u3001\u3069\u3046\u305e\u6c17\u8efd\u306b\u3054\u9023\u7d61\u304f\u3060\u3055\u3044\uff01\ud83d\udcac<\/p>\n<\/div>\n\n<hr class=\"pt-divider\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     3. \u72ec\u81ea\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-own-platform\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\ud83d\udce6<\/span>\n    <h2>\u72ec\u81ea\u306e PeerTube \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u308b<\/h2>\n  <\/div>\n\n  <p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u305f\u306f\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u306b\u306f\u3001\u63a8\u5968\u65b9\u6cd5\u3067\u3042\u308b<a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/support\/doc\/production.md\" target=\"_blank\" rel=\"noopener\">\u672c\u756a\u74b0\u5883\u5411\u3051\u30ac\u30a4\u30c9<\/a>\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u8981\u4ef6\u306b\u3064\u3044\u3066\u306f\u3001FAQ \u306e\u300c<a href=\"https:\/\/joinpeertube.org\/en_US\/faq#should-i-have-a-big-server-to-run-peertube\" target=\"_blank\" rel=\"noopener\">PeerTube \u3092\u52d5\u304b\u3059\u306b\u306f\u5927\u304d\u306a\u30b5\u30fc\u30d0\u30fc\u304c\u5fc5\u8981\u3067\u3059\u304b\uff1f<\/a>\u300d\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n  <p>\u3055\u307e\u3056\u307e\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\uff08<a href=\"https:\/\/install-app.yunohost.org\/?app=peertube\" target=\"_blank\" rel=\"noopener\">YunoHost<\/a> \u3084 <a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/support\/doc\/docker.md\" target=\"_blank\" rel=\"noopener\">Docker<\/a> \u3092\u542b\u3080\uff09\u5411\u3051\u306e<a href=\"https:\/\/docs.joinpeertube.org\/install\/unofficial\" target=\"_blank\" rel=\"noopener\">\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u88fd\u30d1\u30c3\u30b1\u30fc\u30b8<\/a>\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<hr class=\"pt-divider\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     4. \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4e00\u89a7\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-docs\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\ud83d\udcd6<\/span>\n    <h2>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4e00\u89a7<\/h2>\n  <\/div>\n\n  <p>\u3054\u4e0d\u660e\u306a\u70b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u307e\u305a <a href=\"https:\/\/joinpeertube.org\/en_US\/faq\" target=\"_blank\" rel=\"noopener\">FAQ<\/a> \u3067\u7b54\u3048\u3092\u304a\u63a2\u3057\u304f\u3060\u3055\u3044\u3002<\/p>\n\n  <div class=\"pt-subsection\">\n    <h3>\u30e6\u30fc\u30b6\u30fc\u5411\u3051\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/h3>\n    <p><a href=\"https:\/\/docs.joinpeertube.org\/use\/setup-account\" target=\"_blank\" rel=\"noopener\">\u30e6\u30fc\u30b6\u30fc\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a>\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n\n  <div class=\"pt-subsection\">\n    <h3>\u7ba1\u7406\u8005\u5411\u3051\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/h3>\n    <p><a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/README.md#package-create-your-own-instance\" target=\"_blank\" rel=\"noopener\">\u72ec\u81ea\u306e PeerTube \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u4f5c\u6210\u65b9\u6cd5<\/a>\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002\u3088\u308a\u8a73\u7d30\u306a<a href=\"https:\/\/docs.joinpeertube.org\/admin\/following-instances\" target=\"_blank\" rel=\"noopener\">\u7ba1\u7406\u8005\u5411\u3051\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a>\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n  <\/div>\n\n  <div class=\"pt-subsection\">\n    <h3>\u30c4\u30fc\u30eb\u5411\u3051\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/h3>\n    <p>CLI \u304b\u3089\u306e\u52d5\u753b\u30a4\u30f3\u30dd\u30fc\u30c8\u30fb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u65b9\u6cd5\u3084\u3001PeerTube \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u7ba1\u7406\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001<a href=\"https:\/\/docs.joinpeertube.org\/maintain\/tools\" target=\"_blank\" rel=\"noopener\">\u30c4\u30fc\u30eb\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n\n  <div class=\"pt-subsection\">\n    <h3>\u6280\u8853\u8005\u5411\u3051\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/h3>\n    <p>\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u8a2d\u8a08\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001<a href=\"https:\/\/docs.joinpeertube.org\/contribute\/architecture\" target=\"_blank\" rel=\"noopener\">\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u8a2d\u8a08\u66f8<\/a>\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n    <p>REST API \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff1a<\/p>\n    <ul>\n      <li>OpenAPI 3.0.0 \u30b9\u30ad\u30fc\u30de\uff1a<a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/support\/doc\/api\/openapi.yaml\" target=\"_blank\" rel=\"noopener\">\/support\/doc\/api\/openapi.yaml<\/a><\/li>\n      <li>\u30b9\u30da\u30c3\u30af\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc\uff1a<a href=\"https:\/\/docs.joinpeertube.org\/api-rest-reference.html\" target=\"_blank\" rel=\"noopener\">docs.joinpeertube.org\/api-rest-reference.html<\/a><\/li>\n    <\/ul>\n    <p><a href=\"https:\/\/docs.joinpeertube.org\/api\/activitypub\" target=\"_blank\" rel=\"noopener\">ActivityPub \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a>\u3082\u3054\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n<\/div>\n\n<hr class=\"pt-divider\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     5. \u672c\u756a\u74b0\u5883\u30ac\u30a4\u30c9\uff1a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-production\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\ud83d\udd27<\/span>\n    <h2>\u672c\u756a\u74b0\u5883\u30ac\u30a4\u30c9 \u2014 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h2>\n  <\/div>\n\n  <div class=\"pt-notice warn\">\n    <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n    <p>\u5e2f\u57df\u5e45\u306e\u4f4e\u3044\u56de\u7dda\uff08ADSL \u63a5\u7d9a\u306a\u3069\uff09\u306b\u7e4b\u304c\u3063\u305f\u30c7\u30d0\u30a4\u30b9\u306b\u3001\u672c\u756a\u7528 PeerTube \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u9069\u5207\u306a\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u306b\u3064\u3044\u3066\u306f <a href=\"https:\/\/joinpeertube.org\/en_US\/faq\" target=\"_blank\" rel=\"noopener\">FAQ<\/a> \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n\n  <!-- \u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8 -->\n  <div class=\"pt-subsection\" id=\"pt-prod-deps\">\n    <h3>\ud83d\udd28 \u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8<\/h3>\n    <p><a href=\"https:\/\/docs.joinpeertube.org\/support\/doc\/dependencies\" target=\"_blank\" rel=\"noopener\">\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u30ac\u30a4\u30c9<\/a>\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n\n  <!-- \u30e6\u30fc\u30b6\u30fc\u4f5c\u6210 -->\n  <div class=\"pt-subsection\" id=\"pt-prod-user\">\n    <h3>\ud83d\udc77 PeerTube \u30e6\u30fc\u30b6\u30fc\u306e\u4f5c\u6210<\/h3>\n    <p>\u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092 <code>\/var\/www\/peertube<\/code> \u306b\u8a2d\u5b9a\u3057\u305f <code>peertube<\/code> \u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo useradd -m -d \/var\/www\/peertube -s \/usr\/sbin\/nologin peertube<\/pre>\n    <p>nginx \u304c\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u53c2\u7167\u3067\u304d\u308b\u3088\u3046\u3001\u6a29\u9650\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo chmod 755 \/var\/www\/peertube<\/pre>\n  <\/div>\n\n  <!-- DB -->\n  <div class=\"pt-subsection\" id=\"pt-prod-db\">\n    <h3>\ud83d\uddc3\ufe0f \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a<\/h3>\n    <p>PostgreSQL \u306b\u672c\u756a\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068 <code>peertube<\/code> \u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\nsudo -u postgres createuser -P peertube<\/pre>\n    <div class=\"pt-notice warn\">\n      <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n      <p>\u3053\u3053\u3067 PostgreSQL \u306e <code>peertube<\/code> \u30e6\u30fc\u30b6\u30fc\u7528\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u307e\u3059\u3002\u3053\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5f8c\u3067 <code>production.yaml<\/code> \u306b\u30b3\u30d4\u30fc\u3059\u308b\u306e\u3067\u5fc5\u305a\u63a7\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u7a7a\u6b04\u306e\u307e\u307e\u30a8\u30f3\u30bf\u30fc\u3092\u62bc\u3055\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n    <\/div>\n    <pre class=\"pt-code\">sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod<\/pre>\n    <p>PeerTube \u306b\u5fc5\u8981\u306a\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo -u postgres psql -c \"CREATE EXTENSION pg_trgm;\" peertube_prod\nsudo -u postgres psql -c \"CREATE EXTENSION unaccent;\" peertube_prod<\/pre>\n  <\/div>\n\n  <!-- \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u6e96\u5099 -->\n  <div class=\"pt-subsection\" id=\"pt-prod-dir\">\n    <h3>\ud83d\udcc4 PeerTube \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u6e96\u5099<\/h3>\n    <p>\u6700\u65b0\u30ea\u30ea\u30fc\u30b9\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">VERSION=$(curl -s https:\/\/api.github.com\/repos\/chocobozzz\/peertube\/releases\/latest | grep tag_name | cut -d '\"' -f 4) && echo \"Latest Peertube version is $VERSION\"<\/pre>\n    <p>\u5fc5\u8981\u306a\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\nsudo -u peertube mkdir config storage versions\nsudo -u peertube chmod 750 config\/<\/pre>\n    <p>\u6700\u65b0\u7248\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u5c55\u958b\u5f8c\u306b zip \u3092\u524a\u9664\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\/versions\n# \u30ea\u30ea\u30fc\u30b9\u306f https:\/\/builds.joinpeertube.org\/release \u3067\u3082\u5165\u624b\u53ef\u80fd\nsudo -u peertube wget -q \"https:\/\/github.com\/Chocobozzz\/PeerTube\/releases\/download\/${VERSION}\/peertube-${VERSION}.zip\"\nsudo -u peertube unzip -q peertube-${VERSION}.zip && sudo -u peertube rm peertube-${VERSION}.zip<\/pre>\n    <p>PeerTube \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\nsudo -u peertube ln -s versions\/peertube-${VERSION} .\/peertube-latest\ncd .\/peertube-latest && sudo -H -u peertube npm run install-node-dependencies -- --production<\/pre>\n  <\/div>\n\n  <!-- \u8a2d\u5b9a -->\n  <div class=\"pt-subsection\" id=\"pt-prod-config\">\n    <h3>\ud83d\udd27 PeerTube \u306e\u8a2d\u5b9a<\/h3>\n    <p>\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\uff08\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u76f4\u63a5\u7de8\u96c6\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff09\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\nsudo -u peertube cp peertube-latest\/config\/default.yaml config\/default.yaml<\/pre>\n    <p>\u672c\u756a\u7528\u8a2d\u5b9a\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\nsudo -u peertube cp peertube-latest\/config\/production.yaml.example config\/production.yaml<\/pre>\n    <p><code>config\/production.yaml<\/code> \u3092\u7de8\u96c6\u3057\u307e\u3059\u3002\u7279\u306b\u4ee5\u4e0b\u306e\u9805\u76ee\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n    <ul>\n      <li><code>webserver<\/code>\uff1a\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u306e\u516c\u958b\u60c5\u5831<\/li>\n      <li><code>secrets<\/code>\uff1a\u624b\u52d5\u3067\u751f\u6210\u3059\u308b\u79d8\u5bc6\u6587\u5b57\u5217\uff08\u30d0\u30fc\u30b8\u30e7\u30f3 5.0 \u4ee5\u964d\uff09<\/li>\n      <li><code>database<\/code>\uff1aPostgreSQL \u306e\u8a2d\u5b9a<\/li>\n      <li><code>redis<\/code>\uff1aRedis \u306e\u8a2d\u5b9a<\/li>\n      <li><code>smtp<\/code>\uff1a\u30e1\u30fc\u30eb\u9001\u4fe1\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408<\/li>\n      <li><code>admin.email<\/code>\uff1aroot \u30e6\u30fc\u30b6\u30fc\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9<\/li>\n    <\/ul>\n    <div class=\"pt-notice warn\">\n      <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n      <p>PeerTube \u306f\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306e\u30db\u30b9\u30c8\u540d\u5909\u66f4\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30c9\u30e1\u30a4\u30f3\u540d\u306f\u6700\u521d\u306e\u8d77\u52d5\u6642\u70b9\u3067\u78ba\u5b9a\u3057\u307e\u3059\u3002<\/p>\n    <\/div>\n  <\/div>\n\n  <!-- Nginx -->\n  <div class=\"pt-subsection\" id=\"pt-prod-nginx\">\n    <h3>\ud83d\ude9a \u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\uff08Nginx\uff09\u306e\u8a2d\u5b9a<\/h3>\n    <div class=\"pt-notice info\">\n      <span class=\"pt-notice-icon\">\u2139\ufe0f<\/span>\n      <p>\u516c\u5f0f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f Nginx \u7528\u306e\u307f\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n    <\/div>\n    <p>Nginx \u8a2d\u5b9a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo cp \/var\/www\/peertube\/peertube-latest\/support\/nginx\/peertube \/etc\/nginx\/sites-available\/peertube<\/pre>\n    <p><code>[peertube-domain]<\/code> \u3092\u5b9f\u969b\u306e\u30c9\u30e1\u30a4\u30f3\u540d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo sed -i 's\/${WEBSERVER_HOST}\/[peertube-domain]\/g' \/etc\/nginx\/sites-available\/peertube\nsudo sed -i 's\/${PEERTUBE_HOST}\/127.0.0.1:9000\/g' \/etc\/nginx\/sites-available\/peertube<\/pre>\n    <p>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u30fb\u4fee\u6b63\u3057\u307e\u3059\uff08<code>alias<\/code>\u30fb<code>root<\/code>\u30fb<code>rewrite<\/code> \u306e\u30d1\u30b9\u3001\u9ad8\u30d3\u30c3\u30c8\u30ec\u30fc\u30c8\u914d\u4fe1\u6642\u306e <code>proxy_limit_rate<\/code> \u306a\u3069\uff09\uff1a<\/p>\n    <pre class=\"pt-code\">sudo vim \/etc\/nginx\/sites-available\/peertube<\/pre>\n    <p>\u8a2d\u5b9a\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo ln -s \/etc\/nginx\/sites-available\/peertube \/etc\/nginx\/sites-enabled\/peertube<\/pre>\n    <p>Let&#8217;s Encrypt \u3067 SSL \u8a3c\u660e\u66f8\u3092\u53d6\u5f97\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo systemctl stop nginx\nsudo certbot certonly --standalone --post-hook \"systemctl restart nginx\"\nsudo systemctl restart nginx<\/pre>\n    <p>webroot \u65b9\u5f0f\u3078\u306e\u66f4\u65b0\u3092\u63a8\u5968\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\"># authenticator = standalone \u3092 authenticator = webroot \u306b\u5909\u66f4\n# webroot_path = \/var\/www\/certbot \u3092\u8ffd\u52a0\nsudo vim \/etc\/letsencrypt\/renewal\/your-domain.com.conf<\/pre>\n\n    <h4>\u2697\ufe0f Linux TCP\/IP \u30c1\u30e5\u30fc\u30cb\u30f3\u30b0<\/h4>\n    <pre class=\"pt-code\">sudo cp \/var\/www\/peertube\/peertube-latest\/support\/sysctl.d\/30-peertube-tcp.conf \/etc\/sysctl.d\/\nsudo sysctl -p \/etc\/sysctl.d\/30-peertube-tcp.conf<\/pre>\n    <div class=\"pt-notice info\">\n      <span class=\"pt-notice-icon\">\u2139\ufe0f<\/span>\n      <p>\u30c7\u30d5\u30a9\u30eb\u30c8\u306e FIFO \u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u306f\u30d0\u30c3\u30d5\u30a1\u30d6\u30ed\u30fc\u30c8\u3084\u9045\u5ef6\u304c\u767a\u751f\u3057\u3084\u3059\u3044\u305f\u3081\u3001\u3053\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3092\u63a8\u5968\u3057\u307e\u3059\uff08Debian 9 \u3067\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u7121\u52b9\uff09\u3002<\/p>\n    <\/div>\n  <\/div>\n\n  <!-- systemd -->\n  <div class=\"pt-subsection\" id=\"pt-prod-systemd\">\n    <h3>\ud83e\uddf1 systemd \u306e\u8a2d\u5b9a<\/h3>\n    <pre class=\"pt-code\">sudo cp \/var\/www\/peertube\/peertube-latest\/support\/systemd\/peertube.service \/etc\/systemd\/system\/\nsudo vim \/etc\/systemd\/system\/peertube.service\nsudo systemctl daemon-reload\nsudo systemctl enable peertube   # \u8d77\u52d5\u6642\u306b\u81ea\u52d5\u8d77\u52d5\u3059\u308b\u5834\u5408\nsudo systemctl start peertube\nsudo journalctl -feu peertube<\/pre>\n  <\/div>\n\n  <!-- \u7ba1\u7406\u8005 -->\n  <div class=\"pt-subsection\" id=\"pt-prod-admin\">\n    <h3>\ud83e\uddd1\u200d\ud83d\udcbb \u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8<\/h3>\n    <p>\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u30fc\u540d\u306f <code>root<\/code> \u3067\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u81ea\u52d5\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u30d1\u30b9\u30ef\u30fc\u30c9\u306f PeerTube \u306e\u30ed\u30b0\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u5909\u66f4\u3082\u53ef\u80fd\u3067\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\/peertube-latest && sudo -u peertube NODE_CONFIG_DIR=\/var\/www\/peertube\/config NODE_ENV=production npm run reset-password -- -u root<\/pre>\n    <p>\u307e\u305f\u306f\u74b0\u5883\u5909\u6570 <code>PT_INITIAL_ROOT_PASSWORD<\/code> \u306b\u4efb\u610f\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\uff086\u6587\u5b57\u4ee5\u4e0a\uff09\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n\n    <h4>\ud83c\udf89 \u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/h4>\n    <ul>\n      <li>\u516c\u958b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u4e00\u89a7\u3078\u306e\u767b\u9332\uff08\u4efb\u610f\uff09\uff1a<a href=\"https:\/\/instances.joinpeertube.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/instances.joinpeertube.org\/<\/a><\/li>\n      <li><a href=\"https:\/\/docs.joinpeertube.org\/maintain\/tools\" target=\"_blank\" rel=\"noopener\">CLI \u30c4\u30fc\u30eb<\/a>\u306e\u78ba\u8a8d<\/li>\n    <\/ul>\n  <\/div>\n<\/div>\n\n<hr class=\"pt-divider\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     6. \u672c\u756a\u74b0\u5883\u30ac\u30a4\u30c9\uff1a\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-upgrade\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\u2b06\ufe0f<\/span>\n    <h2>\u672c\u756a\u74b0\u5883\u30ac\u30a4\u30c9 \u2014 \u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/h2>\n  <\/div>\n\n  <div class=\"pt-notice warn\">\n    <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n    <p>\u5909\u66f4\u5c65\u6b74\uff08\u7279\u306b\u300cIMPORTANT NOTES\u300d\u30bb\u30af\u30b7\u30e7\u30f3\uff09\u3092\u5fc5\u305a\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/CHANGELOG.md\" target=\"_blank\" rel=\"noopener\">CHANGELOG.md<\/a><\/p>\n  <\/div>\n\n  <div class=\"pt-subsection\">\n    <h3>\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u3088\u308b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\uff08\u63a8\u5968\uff09<\/h3>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\/peertube-latest\/scripts && sudo -H -u peertube .\/upgrade.sh<\/pre>\n    <p>git \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001<code>production.yaml.new<\/code> \u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u3066\u65e2\u5b58\u306e <code>production.yaml<\/code> \u3068\u7f6e\u304d\u63db\u3048\u3066\u304b\u3089\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n    <pre class=\"pt-code\">sudo systemctl restart peertube<\/pre>\n    <p>\u8907\u6570\u56de\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u5f8c\u306f\u30c7\u30a3\u30b9\u30af\u5bb9\u91cf\u3092\u89e3\u653e\u3067\u304d\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo -u peertube pnpm store prune<\/pre>\n  <\/div>\n\n  <div class=\"pt-subsection\">\n    <h3>\u624b\u52d5\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/h3>\n\n    <h4>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0<\/h4>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube && sudo -u peertube diff config\/production.yaml config\/production.yaml.new\ncd \/var\/www\/peertube && sudo -u peertube cp config\/production.yaml.new config\/production.yaml<\/pre>\n\n    <h4>Nginx \u8a2d\u5b9a\u306e\u5dee\u5206\u78ba\u8a8d<\/h4>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\/versions\ndiff -u \"$(ls -t | head -2 | tail -1)\/support\/nginx\/peertube\" \"$(ls -t | head -1)\/support\/nginx\/peertube\"<\/pre>\n\n    <h4>systemd \u8a2d\u5b9a\u306e\u5dee\u5206\u78ba\u8a8d<\/h4>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\/versions\ndiff -u \"$(ls -t | head -2 | tail -1)\/support\/systemd\/peertube.service\" \"$(ls -t | head -1)\/support\/systemd\/peertube.service\"<\/pre>\n\n    <h4>\u518d\u8d77\u52d5<\/h4>\n    <pre class=\"pt-code\">sudo systemctl reload nginx          # nginx \u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u305f\u5834\u5408\nsudo systemctl daemon-reload         # systemd \u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u305f\u5834\u5408\nsudo systemctl restart peertube && sudo journalctl -fu peertube<\/pre>\n  <\/div>\n\n  <div class=\"pt-subsection\">\n    <h3>\ud83c\udd98 \u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\uff08\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\uff09<\/h3>\n    <pre class=\"pt-code\">OLD_VERSION=\"v0.42.42\" && SQL_BACKUP_PATH=\"backup\/sql-peertube_prod-20180119-1018.bak\" && \\\n  cd \/var\/www\/peertube && sudo -u peertube unlink .\/peertube-latest && \\\n  sudo -u peertube ln -s \"versions\/peertube-$OLD_VERSION\" peertube-latest && \\\n  sudo -u postgres pg_restore -c -C -d peertube_prod \"$SQL_BACKUP_PATH\" && \\\n  sudo systemctl restart peertube<\/pre>\n    <p><code>OLD_VERSION<\/code> \u3068 <code>SQL_BACKUP_PATH<\/code> \u306f\u5b9f\u969b\u306e\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n<\/div>\n\n<hr class=\"pt-divider\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     7. Docker \u30ac\u30a4\u30c9\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-docker\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\ud83d\udc33<\/span>\n    <h2>Docker \u30ac\u30a4\u30c9<\/h2>\n  <\/div>\n\n  <p>\u3053\u306e\u30ac\u30a4\u30c9\u306f docker \u304a\u3088\u3073 docker compose V2 \u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n  <pre class=\"pt-code\">docker compose version  # 2.x.x \u4ee5\u4e0a\u3067\u3042\u308b\u3053\u3068<\/pre>\n\n  <!-- Docker \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb -->\n  <div class=\"pt-subsection\" id=\"pt-docker-install\">\n    <h3>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n\n    <div class=\"pt-notice warn\">\n      <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n      <p>PeerTube \u306f\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306e\u30db\u30b9\u30c8\u540d\u5909\u66f4\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30c9\u30e1\u30a4\u30f3\u540d\u306f\u6700\u521d\u306e\u8d77\u52d5\u6642\u70b9\u3067\u78ba\u5b9a\u3057\u307e\u3059\u3002<\/p>\n    <\/div>\n\n    <h4>\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3059\u308b<\/h4>\n    <div class=\"pt-notice info\">\n      <span class=\"pt-notice-icon\">\u2139\ufe0f<\/span>\n      <p>\u4ee5\u4e0b\u306e\u624b\u9806\u306f\u7a7a\u306e\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u3066 <code>master<\/code> \u30d6\u30e9\u30f3\u30c1\u306e <code>support\/docker\/production<\/code> \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3082\u69cb\u3044\u307e\u305b\u3093\u3002<\/p>\n    <\/div>\n    <pre class=\"pt-code\">cd \/your\/peertube\/directory<\/pre>\n\n    <h4>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u3059\u308b<\/h4>\n    <pre class=\"pt-code\">curl https:\/\/raw.githubusercontent.com\/chocobozzz\/PeerTube\/master\/support\/docker\/production\/docker-compose.yml > docker-compose.yml\ncurl https:\/\/raw.githubusercontent.com\/Chocobozzz\/PeerTube\/master\/support\/docker\/production\/.env > .env<\/pre>\n\n    <h4>.env \u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3059\u308b<\/h4>\n    <p>\u4ee5\u4e0b\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u5b9f\u969b\u306e\u5024\u306b\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n    <ul>\n      <li><code>&lt;MY POSTGRES USERNAME&gt;<\/code><\/li>\n      <li><code>&lt;MY POSTGRES PASSWORD&gt;<\/code><\/li>\n      <li><code>&lt;MY DOMAIN&gt;<\/code>\uff08<code>https:\/\/<\/code> \u306f\u542b\u3081\u306a\u3044\uff09<\/li>\n      <li><code>&lt;MY EMAIL ADDRESS&gt;<\/code><\/li>\n      <li><code>&lt;MY PEERTUBE SECRET&gt;<\/code><\/li>\n    <\/ul>\n    <pre class=\"pt-code\">sudo nano docker-compose.yml\nsudo nano .env<\/pre>\n\n    <h4>\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306e\u8a2d\u5b9a<\/h4>\n    <div class=\"pt-notice info\">\n      <span class=\"pt-notice-icon\">\u2139\ufe0f<\/span>\n      <p>docker compose \u30d5\u30a1\u30a4\u30eb\u306b\u306f\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u5225\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3053\u306e\u624b\u9806\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3001docker compose \u30d5\u30a1\u30a4\u30eb\u306e\u8a72\u5f53\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n    <\/div>\n    <pre class=\"pt-code\">mkdir -p docker-volume\/nginx docker-volume\/nginx-logs\ncurl https:\/\/raw.githubusercontent.com\/Chocobozzz\/PeerTube\/master\/support\/nginx\/peertube > docker-volume\/nginx\/peertube<\/pre>\n    <p>Let&#8217;s Encrypt \u3067 SSL \u8a3c\u660e\u66f8\u3092\u624b\u52d5\u53d6\u5f97\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">mkdir -p docker-volume\/certbot\ndocker run -it --rm --name certbot -p 80:80 -v \"$(pwd)\/docker-volume\/certbot\/conf:\/etc\/letsencrypt\" certbot\/certbot certonly --standalone<\/pre>\n\n    <h4>\u52d5\u4f5c\u78ba\u8a8d<\/h4>\n    <pre class=\"pt-code\">docker compose up<\/pre>\n    <p>\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u78ba\u8a8d\u307e\u305f\u306f\u30ea\u30bb\u30c3\u30c8\uff1a<\/p>\n    <pre class=\"pt-code\">docker compose exec -u peertube peertube npm run reset-password -- -u root\n# \u307e\u305f\u306f\u4ee5\u4e0b\u3067\u30ed\u30b0\u304b\u3089\u78ba\u8a8d\ndocker compose logs peertube | grep -A1 root<\/pre>\n\n    <h4>DKIM DNS TXT \u30ec\u30b3\u30fc\u30c9\u306e\u78ba\u8a8d<\/h4>\n    <pre class=\"pt-code\">cat .\/docker-volume\/opendkim\/keys\/*\/*.txt<\/pre>\n  <\/div>\n\n  <!-- Docker \u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9 -->\n  <div class=\"pt-subsection\" id=\"pt-docker-upgrade\">\n    <h3>\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/h3>\n    <div class=\"pt-notice warn\">\n      <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n      <p>\u5909\u66f4\u5c65\u6b74\u3092\u5fc5\u305a\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/CHANGELOG.md\" target=\"_blank\" rel=\"noopener\">CHANGELOG.md<\/a><\/p>\n    <\/div>\n    <pre class=\"pt-code\">cd \/your\/peertube\/directory\ndocker compose pull\ndocker compose down -v\nmv docker-volume\/nginx\/peertube docker-volume\/nginx\/peertube.bak\ncurl https:\/\/raw.githubusercontent.com\/Chocobozzz\/PeerTube\/master\/support\/nginx\/peertube > docker-volume\/nginx\/peertube\ndocker compose up -d<\/pre>\n  <\/div>\n\n  <!-- PostgreSQL \u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9 -->\n  <div class=\"pt-subsection\" id=\"pt-docker-pg\">\n    <h3>PostgreSQL \u30b3\u30f3\u30c6\u30ca\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/h3>\n    <div class=\"pt-notice warn\">\n      <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n      <p>\u65e2\u5b58\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3068\u65b0\u30af\u30e9\u30b9\u30bf\u30fc\u3078\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u306e\u305f\u3081\u306b\u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n    <\/div>\n\n    <div class=\"pt-step\">\n      <div class=\"pt-step-num\">1<\/div>\n      <div class=\"pt-step-body\">\n        <p>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3001DB \u4ee5\u5916\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u505c\u6b62\u3057\u307e\u3059\uff1a<\/p>\n        <pre class=\"pt-code\">cd \/docker-compose\/directory\nmkdir -p backups\ndocker compose stop peertube webserver certbot<\/pre>\n      <\/div>\n    <\/div>\n\n    <div class=\"pt-step\">\n      <div class=\"pt-step-num\">2<\/div>\n      <div class=\"pt-step-body\">\n        <p>DB \u30b3\u30f3\u30c6\u30ca\u5185\u3067\u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n        <pre class=\"pt-code\">docker compose exec -it postgres \/bin\/bash\nexport PGUSER=\"$POSTGRES_USER\"\nexport PGDATABASE=\"$POSTGRES_DB\"\nexport PGPASSWORD=\"$POSTGRES_PASSWORD\"\npg_dumpall > \"\/tmp\/pg.dump\"\nexit<\/pre>\n      <\/div>\n    <\/div>\n\n    <div class=\"pt-step\">\n      <div class=\"pt-step-num\">3<\/div>\n      <div class=\"pt-step-body\">\n        <p>\u30c0\u30f3\u30d7\u3092\u30b3\u30d4\u30fc\u3057\u3001\u53e4\u3044\u30c7\u30fc\u30bf\u3092\u9000\u907f\u3055\u305b\u307e\u3059\uff1a<\/p>\n        <pre class=\"pt-code\">docker compose cp postgres:\/tmp\/pg.dump backups\/pg.dump\ndocker compose stop postgres\nmv .\/docker-volume\/db .\/docker-volume\/db.bak\nmkdir .\/docker-volume\/db && chmod 700 .\/docker-volume\/db<\/pre>\n      <\/div>\n    <\/div>\n\n    <div class=\"pt-step\">\n      <div class=\"pt-step-num\">4<\/div>\n      <div class=\"pt-step-body\">\n        <p>docker-compose.yml \u306e PostgreSQL \u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u66f4\u65b0\u3057\u3066\u65b0\u30a4\u30e1\u30fc\u30b8\u3092\u53d6\u5f97\u3057\u307e\u3059\uff08\u4f8b\uff1a<code>postgres:13-alpine<\/code> \u2192 <code>postgres:17-alpine<\/code>\uff09\uff1a<\/p>\n        <pre class=\"pt-code\">vim docker-compose.yml\ndocker compose pull\ndocker compose up -d postgres\ndocker compose logs -f postgres  # \"ready to accept connections\" \u3092\u5f85\u3064<\/pre>\n      <\/div>\n    <\/div>\n\n    <div class=\"pt-step\">\n      <div class=\"pt-step-num\">5<\/div>\n      <div class=\"pt-step-body\">\n        <p>\u30c0\u30f3\u30d7\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u307e\u3059\uff1a<\/p>\n        <pre class=\"pt-code\">docker compose cp \"backups\/pg.dump\" postgres:\/tmp\/pg.dump\ndocker compose exec -it postgres \/bin\/bash\nexport PGUSER=\"$POSTGRES_USER\"\nexport PGDATABASE=\"$POSTGRES_DB\"\nexport PGPASSWORD=\"$POSTGRES_PASSWORD\"\npsql -U \"$POSTGRES_USER\" -c \"SELECT version();\"\npsql -U \"$POSTGRES_USER\" -f \/tmp\/pg.dump\npsql -U \"$POSTGRES_USER\" -c \"ALTER USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD'\"\nexit<\/pre>\n      <\/div>\n    <\/div>\n\n    <div class=\"pt-step\">\n      <div class=\"pt-step-num\">6<\/div>\n      <div class=\"pt-step-body\">\n        <p>\u5168\u30b5\u30fc\u30d3\u30b9\u3092\u518d\u8d77\u52d5\u3057\u3066\u78ba\u8a8d\u3057\u307e\u3059\uff1a<\/p>\n        <pre class=\"pt-code\">docker compose up -d peertube webserver certbot\ndocker compose logs -f peertube<\/pre>\n        <p>\u554f\u984c\u306a\u3051\u308c\u3070\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u524a\u9664\u3057\u307e\u3059\uff1a<\/p>\n        <pre class=\"pt-code\">rm -rf .\/docker-volume\/db.bak backups<\/pre>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u30d3\u30eb\u30c9 -->\n  <div class=\"pt-subsection\" id=\"pt-docker-build\">\n    <h3>\u30d3\u30eb\u30c9<\/h3>\n    <h4>\u672c\u756a\u74b0\u5883\u5411\u3051\u30d3\u30eb\u30c9<\/h4>\n    <pre class=\"pt-code\">git clone https:\/\/github.com\/chocobozzz\/PeerTube \/tmp\/peertube\ncd \/tmp\/peertube\ndocker build . -f .\/support\/docker\/production\/Dockerfile<\/pre>\n    <h4>\u958b\u767a\u74b0\u5883\u5411\u3051\u30d3\u30eb\u30c9<\/h4>\n    <p>\u73fe\u5728\u3001\u958b\u767a\u7528\u306e Docker \u30a4\u30e1\u30fc\u30b8\u306f\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u958b\u767a\u3078\u306e\u53c2\u52a0\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001<a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/blob\/develop\/.github\/CONTRIBUTING.md\" target=\"_blank\" rel=\"noopener\">CONTRIBUTING \u30ac\u30a4\u30c9<\/a>\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n<\/div>\n\n<hr class=\"pt-divider\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     8. \u975e\u516c\u5f0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"pt-section\" id=\"pt-unofficial\">\n  <div class=\"pt-section-header\">\n    <span class=\"pt-section-icon\">\ud83d\udee0\ufe0f<\/span>\n    <h2>\u975e\u516c\u5f0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5<\/h2>\n  <\/div>\n\n  <!-- Git -->\n  <div class=\"pt-subsection\" id=\"pt-git\">\n    <h3>Git \u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n    <div class=\"pt-notice warn\">\n      <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n      <p>\u3053\u306e\u30ac\u30a4\u30c9\u306f\u516c\u5f0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30ac\u30a4\u30c9\u3092\u8aad\u3093\u3067\u3044\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u304a\u308a\u3001\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u306a\u3069\u306f\u7701\u7565\u3057\u3066\u3044\u307e\u3059\u3002\u6700\u7d42\u7684\u306b\u6700\u65b0\u306e\u958b\u767a\u7248\uff08\u4e0d\u5b89\u5b9a\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\uff09\u304c\u52d5\u4f5c\u3059\u308b\u74b0\u5883\u304c\u69cb\u7bc9\u3055\u308c\u307e\u3059\u3002<\/p>\n    <\/div>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube\/versions\/\nsudo -u peertube -H bash\ngit clone https:\/\/github.com\/Chocobozzz\/PeerTube.git peertube-develop\ncd peertube-develop\/<\/pre>\n    <p>\u76ee\u7684\u306e\u30d6\u30e9\u30f3\u30c1\u3092\u78ba\u8a8d\u30fb\u5207\u308a\u66ff\u3048\u305f\u3089\uff08<code>git checkout [\u30d6\u30e9\u30f3\u30c1\u540d\u307e\u305f\u306f\u30b3\u30df\u30c3\u30c8\u30cf\u30c3\u30b7\u30e5]<\/code>\uff09\u3001\u30d3\u30eb\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">pnpm install --frozen-lockfile\nnpm run build<\/pre>\n    <p>\u30b3\u30f3\u30d1\u30a4\u30eb\u306b\u306f\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u3067\u30d3\u30eb\u30c9\u3057\u3066\u304b\u3089\u30b5\u30fc\u30d0\u30fc\u306b\u8ee2\u9001\u3059\u308b\u65b9\u6cd5\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n    <p>\u8a2d\u5b9a\u8ffd\u52a0\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u884c\u3044\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">SQL_BACKUP_PATH=\"backup\/sql-peertube_prod-$(date -Im).bak\" && \\\n     cd \/var\/www\/peertube && sudo -u peertube mkdir -p backup && \\\n     sudo -u postgres pg_dump -F c peertube_prod | sudo -u peertube tee \"$SQL_BACKUP_PATH\" >\/dev\/null<\/pre>\n    <p>\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u66f4\u65b0\u3057\u3066\u518d\u8d77\u52d5\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/var\/www\/peertube && \\\n    sudo unlink .\/peertube-latest && \\\n    sudo -u peertube ln -s versions\/peertube-develop .\/peertube-latest\nsudo systemctl restart peertube<\/pre>\n    <div class=\"pt-notice danger\">\n      <span class=\"pt-notice-icon\">\ud83d\udeab<\/span>\n      <p><code>git pull<\/code> + <code>npm run build<\/code> \u3067\u958b\u767a\u7248\u3092\u5225\u306e\u958b\u767a\u7248\u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u30b5\u30a4\u30c8\u304c\u58ca\u308c\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u7248\u306b\u623b\u3059\u304b\u3001\u30d5\u30a9\u30eb\u30c0\u3092\u30b3\u30d4\u30fc\u3057\u3066\u305d\u3061\u3089\u3067\u30d3\u30eb\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n    <\/div>\n  <\/div>\n\n  <!-- ArchLinux -->\n  <div class=\"pt-subsection\" id=\"pt-arch\">\n    <h3>ArchLinux <span class=\"pt-badge\">AUR<\/span><\/h3>\n    <p>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30d1\u30c3\u30b1\u30fc\u30b8\uff08daftaupe \u6c0f\u4f5c\u6210\uff09\u3092\u901a\u3058\u3066 AUR \u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">asp checkout peertube\ncd peertube\nmakepkg --syncdeps --rmdeps --install --clean<\/pre>\n    <p>\u307e\u305f\u306f\uff1a<\/p>\n    <pre class=\"pt-code\">yay -S peertube<\/pre>\n    <p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u3001<code>\/usr\/share\/webapps\/peertube\/config\/production.yaml<\/code> \u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u8a8d\u8a3c\u60c5\u5831\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002RC \u7248\u30fb\u30ca\u30a4\u30c8\u30ea\u30fc\u30d3\u30eb\u30c9\u5411\u3051\u306e Arch \u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u73fe\u5728\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u5834\u5408\u306f tarball \u3092\u3054\u5229\u7528\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n\n  <!-- CentOS -->\n  <div class=\"pt-subsection\" id=\"pt-centos\">\n    <h3>CentOS \/ Fedora \/ RHEL <span class=\"pt-badge\">COPR<\/span><\/h3>\n    <pre class=\"pt-code\">dnf copr enable daftaupe\/peertube<\/pre>\n\n    <h4>\u524d\u63d0\u6761\u4ef6<\/h4>\n    <p>PostgreSQL\u30fbNode.js\u30fbFFmpeg \u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n    <p><strong>Fedora \u306e\u5834\u5408<\/strong>\u3001RPM Fusion \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">sudo dnf install https:\/\/download1.rpmfusion.org\/free\/fedora\/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https:\/\/download1.rpmfusion.org\/nonfree\/fedora\/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm<\/pre>\n    <p><strong>CentOS \u306e\u5834\u5408<\/strong>\u3001EPEL \u3068 epel-multimedia \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\uff1a<\/p>\n    <pre class=\"pt-code\">cd \/etc\/yum.repos.d && curl -O https:\/\/negativo17.org\/repos\/epel-multimedia.repo yum install https:\/\/dl.fedoraproject.org\/pub\/epel\/epel-release-latest-7.noarch.rpm https:\/\/negativo17.org\/repos\/epel-multimedia.repo<\/pre>\n\n    <h4>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a<\/h4>\n    <pre class=\"pt-code\">su - postgres\ninitdb\ncreateuser peertube -W\ncreatedb -O peertube peertube_prod\necho \"host peertube_prod peertube 127.0.0.1\/32 md5\" >> data\/pg_hba.conf\nsystemctl reload postgresql<\/pre>\n\n    <h4>\u8d77\u52d5<\/h4>\n    <pre class=\"pt-code\">systemctl start redis\nvim \/etc\/peertube\/production.yaml\nsystemctl start peertube && journalctl -f -u peertube<\/pre>\n  <\/div>\n\n  <!-- YunoHost -->\n  <div class=\"pt-subsection\" id=\"pt-yunohost\">\n    <h3>YunoHost <span class=\"pt-badge\">Debian<\/span><\/h3>\n    <p>YunoHost \u3092\u52d5\u304b\u3057\u3066\u3044\u308b Debian \u74b0\u5883\u3067\u306f\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u3063\u3066 pnpm\u30fbNode\u30fbPeerTube \u3092\u4e00\u62ec\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/p>\n    <p><a href=\"https:\/\/install-app.yunohost.org\/?app=peertube\" target=\"_blank\" rel=\"noopener\">YunoHost \u3067 PeerTube \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/a>\u3000\uff0f\u3000<a href=\"https:\/\/forum.yunohost.org\/\" target=\"_blank\" rel=\"noopener\">\u30b5\u30dd\u30fc\u30c8\u30d5\u30a9\u30fc\u30e9\u30e0<\/a><\/p>\n  <\/div>\n\n  <!-- Kubernetes -->\n  <div class=\"pt-subsection\" id=\"pt-k8s\">\n    <h3>Kubernetes <span class=\"pt-badge\">Helm<\/span><\/h3>\n    <p>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u7ba1\u7406\u3059\u308b Helm \u30c1\u30e3\u30fc\u30c8\u3092\u4f7f\u3063\u3066 PeerTube \u3092 Kubernetes \u4e0a\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u524d\u306b\u5fc5\u8981\u306a Helm \u306e\u5024\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u8a73\u7d30\u306f <a href=\"https:\/\/github.com\/Chocobozzz\/PeerTube\/tree\/develop\/support\/k8s\" target=\"_blank\" rel=\"noopener\">peertube-helm \u306e README<\/a> \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n  <\/div>\n\n  <!-- \u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8 -->\n  <div class=\"pt-subsection\" id=\"pt-shell-docker\">\n    <h3>\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8 + Docker Compose \u306b\u3088\u308b\u4e00\u62ec\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n    <p>Docker \u306e\u307f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30b5\u30fc\u30d0\u30fc\u306b\u30011\u30b3\u30de\u30f3\u30c9\u3067\u516c\u5f0f Docker \u30b9\u30bf\u30c3\u30af\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u4e3b\u306a\u6a5f\u80fd\uff1a<\/p>\n    <ul>\n      <li>Docker Compose \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u305f\u306f\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/li>\n      <li><code>\/var\/peertube<\/code> \u914d\u4e0b\u3078\u306e\u30b9\u30bf\u30c3\u30af\u69cb\u7bc9\u3068\u516c\u5f0f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u914d\u7f6e<\/li>\n      <li><code>.env<\/code> \u5909\u6570\u306e\u81ea\u52d5\u5165\u529b\u30fbPostgreSQL \u8a8d\u8a3c\u60c5\u5831\u306e\u81ea\u52d5\u751f\u6210<\/li>\n      <li>Certbot \u306b\u3088\u308b Let&#8217;s Encrypt \u8a3c\u660e\u66f8\u306e\u521d\u56de\u53d6\u5f97<\/li>\n      <li>systemd \u30b5\u30fc\u30d3\u30b9\u306e\u4f5c\u6210\u3068\u30b9\u30bf\u30c3\u30af\u8d77\u52d5<\/li>\n      <li>PostgreSQL \u30c0\u30f3\u30d7\u30fb\u30ea\u30b9\u30c8\u30a2\u3001nginx \u5236\u5fa1\u3001\u30b9\u30bf\u30c3\u30af\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u306a\u3069\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6a5f\u80fd<\/li>\n    <\/ul>\n    <p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ea\u30f3\u30af\uff1a<a href=\"https:\/\/github.com\/kimsible\/getpeer.tube\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/kimsible\/getpeer.tube<\/a><\/p>\n    <div class=\"pt-notice warn\">\n      <span class=\"pt-notice-icon\">\u26a0\ufe0f<\/span>\n      <p>\u3053\u308c\u3089\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u591a\u304f\u306f\u30d9\u30fc\u30bf\u7248\u3067\u3059\u3002\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u6b53\u8fce\u3057\u307e\u3059\u3002<\/p>\n    <\/div>\n  <\/div>\n\n  <!-- Ansible -->\n  <div class=\"pt-subsection\" id=\"pt-ansible\">\n    <h3>Ansible Playbook <span class=\"pt-badge\">Fedora<\/span><span class=\"pt-badge\">Podman<\/span><\/h3>\n    <p>Ansible Playbook \u3092\u4f7f\u3063\u3066 Fedora \/ Fedora Server \u4e0a\u306b PeerTube \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002PeerTube \u30b5\u30fc\u30d0\u30fc\u306f Podman \u3068 Systemd Quadlets \u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002<\/p>\n    <p>Playbook \u30ea\u30f3\u30af\uff1a<a href=\"https:\/\/gitlab.nuculabs.dev\/dnutiu\/ansible-playbooks\/-\/tree\/master\/peertube-server\" target=\"_blank\" rel=\"noopener\">gitlab.nuculabs.dev\/dnutiu\/ansible-playbooks<\/a><\/p>\n    <div class=\"pt-notice info\">\n      <span class=\"pt-notice-icon\">\u2139\ufe0f<\/span>\n      <p>\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3068\u30e1\u30fc\u30eb\u30b5\u30fc\u30d3\u30b9\u306f\u5225\u9014\u7528\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002SELinux\u30fbFirewalld\u30fbPodman \u30b3\u30f3\u30c6\u30ca\u30fb\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a\u30fbSystemd Quadlets \u306f Playbook \u304c\u81ea\u52d5\u69cb\u6210\u3057\u307e\u3059\u3002<\/p>\n    <\/div>\n\n    <h4>variables.yaml \u306e\u8a2d\u5b9a<\/h4>\n    <pre class=\"pt-code\">selinux_virt_use_samba: true        # SAMBA \u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u5834\u5408\nbase_directory: \"\/peertube\"\npeertube:\n  open_firewall_ports: true          # \u30dd\u30fc\u30c8 9000\u30fb1935 \u3092\u958b\u653e\uff08\u540c\u4e00\u30de\u30b7\u30f3\u306b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u304c\u3042\u308b\u5834\u5408\u306f false\uff09\n  env_file: \"environment_file\"\n  backups_directory: \"\/peertube\/backups\"\n  image_name: \"docker.io\/chocobozzz\/peertube:v7.0.1-bookworm\"\n  data_directory: \"\/peertube\/data\"\n  config_directory: \"\/peertube\/config\"\n  environment:\n    secret: \"cff9ea5880b72f...\"      # openssl rand -hex 32 \u3067\u751f\u6210\n    db_user: \"user\"\n    db_pass: \"pass\"\n    webserver:\n      hostname: \"peertube.example.com\"  # \u5b9f\u969b\u306e\u30c9\u30e1\u30a4\u30f3\u306b\u5909\u66f4\n      port: 80                           # HTTPS \u306e\u5834\u5408\u306f 443\n      tls: \"false\"                       # HTTPS \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f \"true\"\n    smtp:\n      hostname: \"smtp.gmail.com\"\npostgres:\n  image_name: \"docker.io\/postgres:13-alpine\"\nredis:\n  image_name: \"docker.io\/redis:6-alpine\"<\/pre>\n\n    <h4>inventory.ini \u3068\u30c7\u30d7\u30ed\u30a4<\/h4>\n    <pre class=\"pt-code\"># inventory.ini\n[servers]\n192.X.X.X ansible_user=root<\/pre>\n    <pre class=\"pt-code\">make run   # Ansible \u304c\u306a\u3044\u5834\u5408\u306f\u5148\u306b make install<\/pre>\n    <p>Ansible \u3092\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5834\u5408\uff1a<\/p>\n    <pre class=\"pt-code\">sudo dnf install ansible\nansible-galaxy collection install community.general\nansible-galaxy collection install containers.podman\nansible-galaxy collection install ansible.posix<\/pre>\n\n    <h4>\u81ea\u52d5\u30d0\u30c3\u30af\u30a2\u30c3\u30d7<\/h4>\n    <p>Playbook \u5b8c\u4e86\u5f8c\u3001\u6bce\u65e5\u5b9f\u884c\u3055\u308c\u308b\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u30ec\u30d9\u30eb\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306f PostgreSQL \u304c\u505c\u6b62\u3057\u307e\u3059\u3002\u81ea\u52d5\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u7121\u52b9\u5316\u3059\u308b\u5834\u5408\uff1a<\/p>\n    <pre class=\"pt-code\">systemctl stop peertube-backup.timer\nsystemctl disable peertube-backup.timer<\/pre>\n  <\/div>\n\n<\/div><!-- \/.pt-doc -->\n","protected":false},"excerpt":{"rendered":"<p>\u8907\u6570\u306e\u5c0f\u898f\u6a21\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u9023\u5408\u30fb\u76f8\u4e92\u904b\u7528\u3067\u304d\u308b\u5206\u6563\u578b\u52d5\u753b\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u53c2\u52a0\u3057\u307e\u3057\u3087\u3046\u3002\u52d5\u753b\u30af\u30ea\u30a8\u30a4\u30bf\u30fc\u3092\u30d5\u30a9\u30ed\u30fc\u3057\u305f\u308a\u3001\u81ea\u5206\u3067\u52d5\u753b\u3092\u6295\u7a3f\u3057\u305f\u308a\u3002\u7279\u5b9a&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-26","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/krsw.info\/index.php?rest_route=\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/krsw.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/krsw.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/krsw.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/krsw.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=26"}],"version-history":[{"count":3,"href":"https:\/\/krsw.info\/index.php?rest_route=\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":29,"href":"https:\/\/krsw.info\/index.php?rest_route=\/wp\/v2\/posts\/26\/revisions\/29"}],"wp:attachment":[{"href":"https:\/\/krsw.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/krsw.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/krsw.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}