mirror of https://github.com/jkjoy/sunpeiwen.git
512 lines
20 KiB
HTML
512 lines
20 KiB
HTML
|
||
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
<link rel="icon" href="/img/logo.png">
|
||
|
||
|
||
<meta name="author" content="浪子">
|
||
|
||
|
||
<meta name="subtitle" content="一个分享自己生活的博客">
|
||
|
||
|
||
<meta name="description" content="曾梦想仗剑走天涯;因太胖放弃原计划.">
|
||
|
||
|
||
<meta name="keywords" content=",DIY,黑苹果,分享,自由">
|
||
|
||
|
||
<link rel="alternate" href="/atom.xml " title="提剑追梦" type="application/atom+xml">
|
||
|
||
|
||
|
||
|
||
<title>使用Docker快速部署mastodon实例 | 提剑追梦</title>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="/css/style.css" >
|
||
<link rel="stylesheet" href="/css/partial/dark.css" >
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="/css/partial/highlight/atom-one-light.css">
|
||
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css">
|
||
|
||
<link rel="stylesheet" href="https://cdnjs.sgcd.net/lxgw-wenkai-screen-webfont/lxgwwenkaigbscreen.css">
|
||
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css">
|
||
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/a2396837/CDN@latest/css/iconfont.css">
|
||
|
||
|
||
|
||
|
||
<script src="/js/todark.js"></script>
|
||
|
||
<meta name="generator" content="Hexo 6.3.0"></head>
|
||
</html>
|
||
|
||
<div class="nav index" style="height: 60px;">
|
||
<div class="title animated fadeInDown">
|
||
<div class="layui-container">
|
||
<div class="nav-title"><a href="/" title="提剑追梦">提剑追梦</a></div>
|
||
<div class="nav-list">
|
||
<button> <span class=""></span><span style="display: block;"></span><span class=""></span> </button>
|
||
<ul class="layui-nav" lay-filter="">
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/search/ ">
|
||
<i class=" fas fa-search-plus " style="color: rgb(3 169 244);"></i>
|
||
<span class="layui-nav-item-name">搜索</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/ ">
|
||
<i class=" fab fa-fort-awesome " style="color: rgb(255 107 107);"></i>
|
||
<span class="layui-nav-item-name">首页</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/archives/ ">
|
||
<i class=" fas fa-archive " style="color: rgb(10 189 227);"></i>
|
||
<span class="layui-nav-item-name">归档</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/tags/ ">
|
||
<i class=" fas fa-hashtag " style="color: rgb(254 202 87);"></i>
|
||
<span class="layui-nav-item-name">标签</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/fcircle/ ">
|
||
<i class=" fas fa-heart " style="color: rgb(29 209 161);"></i>
|
||
<span class="layui-nav-item-name">朋友圈</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/links/ ">
|
||
<i class=" fab fa-weixin " style="color: hsl(152deg 73% 45%);"></i>
|
||
<span class="layui-nav-item-name">友链</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/memos/ ">
|
||
<i class=" fas fa-coffee " style="color:#31c7c1;"></i>
|
||
<span class="layui-nav-item-name">说说</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li class="layui-nav-item">
|
||
<a href="/about/ ">
|
||
<i class=" fab fa-grav " style="color: rgb(154 106 247);"></i>
|
||
<span class="layui-nav-item-name">关于</span>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
<li class="layui-nav-item" id="btn-toggle-dark">🌙</li>
|
||
|
||
<span class="layui-nav-bar" style="left: 342px; top: 78px; width: 0px; opacity: 0;"></span>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<header class="header">
|
||
|
||
<div class="logo">
|
||
<a href="/"><img src="https://img.imsun.org/avatar.jpg" onerror=this.onerror=null,this.src="/img/loading.gif"></a>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="motto">
|
||
<span>曾梦想仗剑走天涯</span>
|
||
</div>
|
||
|
||
|
||
<div class="social">
|
||
|
||
<a class="social-icon" href="https://github.com/jkjoy" target="_blank" title="Github">
|
||
<i class="iconfont icon-GitHub" aria-hidden="true"></i>
|
||
</a>
|
||
|
||
<a class="social-icon" href="mailto:jkjoy@163.com" target="_blank" title="Email">
|
||
<i class="iconfont icon-email" aria-hidden="true"></i>
|
||
</a>
|
||
|
||
<a class="social-icon" href="/atom.xml" target="_blank" title="rss">
|
||
<i class="iconfont icon-rss" aria-hidden="true"></i>
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</header>
|
||
|
||
|
||
<article id="post">
|
||
<div class="post-title">使用Docker快速部署mastodon实例</div>
|
||
|
||
<div class="post-meta">
|
||
|
||
|
||
<div class="post-meta-item date">
|
||
<span title="发表于 2023.10.30"><i class="far fa-calendar-alt"></i> 2023.10.30</span>
|
||
</div>
|
||
<div class="post-meta-item updated">
|
||
<span title="更新于 2024.05.12"><i class="far fa-calendar-check"></i> 2024.05.12</span>
|
||
</div>
|
||
|
||
|
||
<div class="post-meta-item categories">
|
||
|
||
<i class="fas fa-inbox article-meta__icon"></i> <a href="/categories/%E5%88%86%E4%BA%AB/">分享</a>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="post-meta-item wordcount">
|
||
|
||
<i class="fas fa-pencil-alt"></i> <span class="post-count">308 字</span>
|
||
|
||
|
||
<i class="far fa-clock"></i> <span class="post-count">1 分钟</span>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div class="content">
|
||
<blockquote><h3>自动摘要</h3>
|
||
|
||
ai: 这篇文章介绍了如何使用Docker快速部署Mastodon实例的详细步骤,包括创建和进入目录、拉取镜像、修改Docker Compose配置文件、初始化PostgreSQL数据库、配置Mastodon及其环境变量文件、启动Mastodon服务器,并进行最后的管理员创建等操作。
|
||
</blockquote>
|
||
<div><h2 id="如何使用Docker快速部署mastodon实例"><a href="#如何使用Docker快速部署mastodon实例" class="headerlink" title="如何使用Docker快速部署mastodon实例"></a>如何使用Docker快速部署mastodon实例</h2><p>直接使用docker compose部署是不可行的,需要按照步骤进行</p>
|
||
<h3 id="创建目录"><a href="#创建目录" class="headerlink" title="创建目录"></a>创建目录</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir -p /home/mastodon/mastodon</span><br></pre></td></tr></table></figure>
|
||
<h3 id="进入目录"><a href="#进入目录" class="headerlink" title="进入目录"></a>进入目录</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cd /home/mastodon/mastodon</span><br></pre></td></tr></table></figure>
|
||
<h3 id="拉取镜像"><a href="#拉取镜像" class="headerlink" title="拉取镜像"></a>拉取镜像</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker pull ghcr.io/mastodon/mastodon</span><br></pre></td></tr></table></figure>
|
||
<h3 id="修改docker-compose配置文件"><a href="#修改docker-compose配置文件" class="headerlink" title="修改docker compose配置文件"></a>修改docker compose配置文件</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget https://raw.githubusercontent.com/mastodon/mastodon/main/docker-compose.yml</span><br></pre></td></tr></table></figure>
|
||
<p>修改<code>docker compose</code>文件中的版本号</p>
|
||
<h3 id="初始化PostgreSQL"><a href="#初始化PostgreSQL" class="headerlink" title="初始化PostgreSQL"></a>初始化PostgreSQL</h3><ul>
|
||
<li>重要!!!!!<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=设置数据库管理员密码 --rm -d postgres:14-alpine</span><br></pre></td></tr></table></figure>
|
||
进入数据库<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker exec -it postgres14 psql -U postgres</span><br></pre></td></tr></table></figure>
|
||
创建用户名mastodon的密码<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">CREATE USER mastodon WITH PASSWORD '数据库密码(最好和数据库管理员密码不一样)' CREATEDB;</span><br></pre></td></tr></table></figure>
|
||
停止docker<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker stop postgres14</span><br></pre></td></tr></table></figure></li>
|
||
</ul>
|
||
<h3 id="配置Mastodon"><a href="#配置Mastodon" class="headerlink" title="配置Mastodon"></a>配置Mastodon</h3><p>在<code>/home/mastodon/mastodon</code>根文件夹中创建空白<code>.env.production</code>文件</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cd /home/mastodon/mastodon</span><br><span class="line">touch .env.production</span><br></pre></td></tr></table></figure>
|
||
<p>运行引导</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker-compose run --rm web bundle exec rake mastodon:setup</span><br></pre></td></tr></table></figure>
|
||
<p>按照提示进行操作<br><code>Below is your configuration, save it to an .env.production file outside Docker:</code>之后会出现配置文件的数据,复制下来<br>写入<code>.env.production</code>中</p>
|
||
<p>启动Mastodon</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker-compose down</span><br><span class="line">docker-compose up -d</span><br></pre></td></tr></table></figure>
|
||
<p>文件夹赋权</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">chown 991:991 -R ./public</span><br><span class="line">chown -R 70:70 ./postgres14</span><br><span class="line">docker-compose down</span><br><span class="line">docker-compose up -d</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>创建管理员</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker exec mastodon-web-1 tootctl accounts create USERNAME --email EMAIL --confirmed --role Owner</span><br></pre></td></tr></table></figure>
|
||
<p>至此完成</p>
|
||
</div>
|
||
|
||
<div class="post-copyright">
|
||
<div class="copyright-item">
|
||
<span> 作者: 浪子</span>
|
||
</div>
|
||
<div class="copyright-item">
|
||
<span> 链接: <a href="https://blog.jkjoy.cn/posts/ebf565b6.html">https://blog.jkjoy.cn/posts/ebf565b6.html</a></span>
|
||
</div>
|
||
<div class="copyright-item">
|
||
<span> 声明: 本博客所有文章除特别声明外,均采用许可协议 <a target="_blank" rel="noopener" href="http://creativecommons.org/licenses/by-nc/4.0/">CC-BY-NC-4.0</a> 转载请注明出处!</span>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="share-reward">
|
||
<div class="share">
|
||
|
||
<div class="social-share" data-sites="wechat,weibo,qq"></div>
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/social-share.js/dist/css/share.min.css">
|
||
<script src="https://cdn.jsdelivr.net/npm/social-share.js/dist/js/social-share.min.js"></script>
|
||
|
||
|
||
</div>
|
||
<div class="reward">
|
||
|
||
<div style="padding: 10px 0; margin-left: 20px; width: 90%; text-align: center;">
|
||
<div class="reward-content">
|
||
<ul id="donateBox" class="list pos-a">
|
||
|
||
<li id="PayPal"><a href="https://paypal.me/jkjoy" target="_blank" title="贝宝">贝宝</a></li>
|
||
|
||
|
||
<li id="AliPay" title="支付宝"><img data-img="https://blogcdn.loliko.cn/ali.png" onerror=this.onerror=null,this.src="/img/loading.gif"></img></li>
|
||
|
||
|
||
<li id="WeChat" title="微信"><img date-img="https://blogcdn.loliko.cn/wx.png" onerror=this.onerror=null,this.src="/img/loading.gif"></img></li>
|
||
|
||
</ul>
|
||
<div id="QRBox" class="pos-f left-100">
|
||
<div id="MainBox"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="post_tags">
|
||
|
||
<i class="fas fa-tag"></i> <a href="/tags/mastodon/" class="tag">mastodon</a>
|
||
|
||
</div>
|
||
<div class="post-nav">
|
||
|
||
<div class="post-nav-prev post-nav-item">
|
||
<a href="/posts/b50cb9c4.html" >关于网络发展的随笔<i class="fa fa-chevron-left"></i></a>
|
||
</div>
|
||
|
||
|
||
<div class="post-nav-next post-nav-item">
|
||
<a href="/posts/d29d6713.html" >快速部署misskey实例<i class="fa fa-chevron-right"></i></a>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3><i class="far fa-comment"></i> 评论</h3>
|
||
<div id="tcomment"></div>
|
||
<script src="https://cdn.staticfile.org/twikoo/1.6.32/twikoo.all.min.js"></script>
|
||
<script>
|
||
twikoo.init({
|
||
envId: 'https://t.jkjoy.cn',
|
||
el: '#tcomment',
|
||
})
|
||
</script>
|
||
|
||
|
||
</article>
|
||
|
||
|
||
<a id="gotop" href="javascript:" title="返回顶部"><i class="fa fa-arrow-up"></i></a>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div id="bottom-outer">
|
||
<div id="bottom-inner">
|
||
© 2020 <i class="fa fa-heart" id="heart"></i> 浪子
|
||
<br>
|
||
Powered by
|
||
<a target="_blank" rel="noopener" href="http://hexo.io">hexo</a> | Theme is <a target="_blank" rel="noopener" href="https://github.com/a2396837/hexo-theme-blank/">blank</a>
|
||
|
||
<div class="icp-info">
|
||
|
||
<a href="" target="_blank"> </a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/layui-src@2.5.5/dist/layui.min.js"></script>
|
||
|
||
|
||
|
||
|
||
<script src="/js/script.js"></script>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script>
|
||
window.lazyLoadOptions = {
|
||
elements_selector: 'img',
|
||
threshold: 0
|
||
}
|
||
</script>
|
||
<script src="https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js"></script>
|
||
|
||
|
||
|
||
<script>
|
||
var images = $('img').not('.nav-logo img').not('.card img').not($('a>img')).not('.reward-content img')
|
||
images.each(function (i, o) {
|
||
var lazyloadSrc = $(o).attr('data-src') ? $(o).attr('data-src') : $(o).attr('src')
|
||
$(o).wrap(`<a href="${lazyloadSrc}" data-fancybox="group" data-caption="${$(o).attr('alt')}" class="fancybox"></a>`)
|
||
})
|
||
</script>
|
||
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js"></script>
|
||
<script>
|
||
$().fancybox({
|
||
selector: '[data-fancybox]',
|
||
loop: true,
|
||
transitionEffect: 'slide',
|
||
protect: true,
|
||
buttons: ['slideShow', 'fullScreen', 'thumbs', 'close']
|
||
})
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script>
|
||
jQuery(document).ready(function () {
|
||
var QRBox = $('#QRBox');
|
||
var MainBox = $('#MainBox');
|
||
var AliPayQR = 'https://blogcdn.loliko.cn/ali.png';
|
||
var WeChanQR = 'https://blogcdn.loliko.cn/wx.png';
|
||
|
||
function showQR(QR) {
|
||
if (QR) {
|
||
MainBox.css('background-image', 'url(' + QR + ')');
|
||
}
|
||
$('#donateBox').addClass('blur');
|
||
QRBox.fadeIn(300, function (argument) {
|
||
MainBox.addClass('showQR');
|
||
});
|
||
}
|
||
|
||
$('#donateBox>li').click(function (event) {
|
||
var thisID = $(this).attr('id');
|
||
if (thisID === 'AliPay') {
|
||
showQR(AliPayQR);
|
||
} else if (thisID === 'WeChat') {
|
||
showQR(WeChanQR);
|
||
}
|
||
});
|
||
|
||
MainBox.click(function (event) {
|
||
MainBox.removeClass('showQR').addClass('hideQR');
|
||
setTimeout(function (a) {
|
||
QRBox.fadeOut(300, function (argument) {
|
||
MainBox.removeClass('hideQR');
|
||
});
|
||
$('#DonateText,#donateBox,#github').removeClass('blur');
|
||
}, 600);
|
||
|
||
});
|
||
});
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/instant.page/instantpage.min.js" type="module" defer></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.4/dist/clipboard.min.js"></script>
|
||
<script>
|
||
!function (e, t, a) {
|
||
var initCopyCode = function(){
|
||
var copyHtml = '';
|
||
copyHtml += '<button class="btn-copy" data-clipboard-snippet="">';
|
||
copyHtml += ' <i class="fa fa-clipboard"></i><span>复制</span>';
|
||
copyHtml += '</button>';
|
||
$(".highlight .code pre").before(copyHtml);
|
||
new ClipboardJS('.btn-copy', {
|
||
target: function(trigger) {
|
||
return trigger.nextElementSibling;
|
||
}
|
||
});
|
||
}
|
||
initCopyCode();
|
||
}(window, document);
|
||
</script>
|
||
|
||
|
||
<script>
|
||
var btntop = $('#gotop');
|
||
btntop.on('click', function (e) {
|
||
e.preventDefault();
|
||
$('html, body').animate({ scrollTop: 0 }, '300');
|
||
});
|
||
|
||
var $table = $('.content table').not($('figure.highlight > table'))
|
||
$table.each(function () {
|
||
$(this).wrap('<div class="table-wrap"></div>')
|
||
})
|
||
</script>
|
||
|
||
|
||
|
||
</html> |