<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="2054" data-post-id="2054">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mackenza" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mackenza/120/189_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mackenza
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="ckhrysze" data-post="13" data-topic="289">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ckhrysze/48/11529_2.png" class="avatar"> ckhrysze:</div>
<blockquote>
<p>I have some rudimentary knowledge of the various skills typically labeled devops, but as the strongest on the team in that regard as well as being the lead developer, as little time spent with hosting is the larger concern for me.</p>
</blockquote>
</aside>
<p>remember, all the solutions mentioned so far are self-managed. So you may find yourself spending a decent amount of time hardening and maintaining the servers regardless of whether you get a dedicated server or cloud VPS.</p>
<p>You may want to consider a managed VPS where the patching and security updates are done for you by people who do this for a living. It depends, I guess, on the nature of the apps you host and how much a data breach would impact you.</p>
<p>I have heard (but not used personally) <a href="https://squidix.com/hosting/managed-vps/" rel="noopener nofollow ugc">SquidX</a> is good for managed VPS. I am sure there are others. There is a section on WebHostingTalk on fully managed servers if that is the approach you take.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2054" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-2054" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2054"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="2087" data-post-id="2087">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ckhrysze" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ckhrysze/120/11529_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ckhrysze
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>SquidX does look promising, and well within budget…the main thing I’d like to preserve is at least the potential for node to node communication driven by phoenix channels. But I really just don’t know enough about the whole stack to know what to look for. I also don’t know that I’ll need it, but I’d like to experiment a bit either way.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2087" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-2087" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2087"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="2090" data-post-id="2090">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mackenza" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mackenza/120/189_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mackenza
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I have used VPS from a few providers and they all had internal networks that provided machine to machine communication via internal IP addresses (all you need for channels). And the internal traffic doesn’t count towards your monthly bandwidth allotment so it’s perfect for running multi-server apps. Make sure that is on your list of questions for potential hosts.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2090" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-2090" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2090"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="2093" data-post-id="2093">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Mandemus" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Mandemus
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mackenza" data-post="22" data-topic="289">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mackenza/48/189_2.png" class="avatar"> mackenza:</div>
<blockquote>
<p>remember, all the solutions mentioned so far are self-managed. So you may find yourself spending a decent amount of time hardening and maintaining the servers regardless of whether you get a dedicated server or cloud VPS.</p>
</blockquote>
</aside>
<p>Hardening servers really isn’t that difficult.</p>
<p>Change default ports, only spin up protocols that you actually use.  Make sure iptables is running.  Generate keys for ssh.  Few other odds and ends.  Takes all of 10 minutes once you’ve done it a few times.</p>
<p>Always though keep an eye on the logs daily.  Can set up a cron job to email them to you for that.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2093" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-2093" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2093"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="2094" data-post-id="2094">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ckhrysze" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ckhrysze/120/11529_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ckhrysze
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mackenza" data-post="24" data-topic="289">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mackenza/48/189_2.png" class="avatar"> mackenza:</div>
<blockquote>
<p>I have used VPS from a few providers and they all had internal networks that provided machine to machine communication via internal IP addresses (all you need for channels).</p>
</blockquote>
</aside>
<p>I realize it isn’t quite the same thing, but to be clear, that doesn’t work on heroku, correct?</p>
<p>Security hardening actually isn’t as big of a concern for me as db backups or various db replication schemes. I suppose its possible that a single cron script can get by until more is actually needed…but I’m not sure I’d even know when its needed.</p>
<p>Glanced back through the thread, and forgot I didn’t even start it; sorry for somewhat hijacking it, and thank you everyone for all the advice!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2094" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-2094" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2094"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="2095" data-post-id="2095">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AstonJ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AstonJ/120/15_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AstonJ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You can use the Ruby backup gem <a href="https://github.com/backup/backup" class="inline-onebox" rel="nofollow">GitHub - backup/backup: Easy full stack backup operations on UNIX-like systems. · GitHub</a></p>
<p>I use it in addition to my normal backups to back up to AWS.</p>
<p>You could also write your own script but the ruby gem is brilliant.</p>
<p>You’d usually need to backup:</p>
<ul>
<li>database</li>
<li>user uploads</li>
<li>site files/assets etc</li>
<li>configurations/emails etc</li>
</ul>
<p>Also agree with <a class="mention" href="/u/mandemus" rel="nofollow">@Mandemus</a> about security. Linux is pretty secure by default but the things <a class="mention" href="/u/mandemus" rel="nofollow">@Mandemus</a> mentioned is a great start in hardening your server.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2095" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-2095" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2095"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="2097" data-post-id="2097">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mackenza" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mackenza/120/189_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mackenza
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Mandemus" data-post="25" data-topic="289">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/m/a9adbd/48.png" class="avatar"> Mandemus:</div>
<blockquote>
<p>Hardening servers really isn’t that difficult.</p>
</blockquote>
</aside>
<p>never said it was hard. my only point is that if someone is running a business and the time they spend admining a server x the amount their time is worth &gt; the cost of a managed vps - self-managed vps then it makes business sense to look at alternatives.</p>
<p>hard, no. good use of time, maybe/maybe not</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2097" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-2097" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2097"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="2188" data-post-id="2188">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kofno" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kofno/120/164_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kofno
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I don’t see much mention of heroku here.</p>
<p>Heroku appeals to me because many of my side projects are one man shows (ME). So I want a solution that I can at least demo on a free platform. Also, minimal maintenance is pretty important.</p>
<p>If anyone has experience running Phoenix on heroku, I’d be interested to hear it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2188" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-2188" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2188"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="2388" data-post-id="2388">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeffweiss" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeffweiss/120/946_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeffweiss
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/kofno" rel="nofollow">@kofno</a>, I deployed a couple variants of our applications to Heroku to great success before we ultimately decided to move them in-house. The decision to move in-house was unrelated to the tech stack, but more related to connecting to other internally-hosted services: LDAP, data warehouse, statsd.</p>
<p>While the prior versions of the applications were hosted in Heroku, we monitored via <a href="https://hex.pm/packages/plug_statsd" rel="nofollow">plug_statsd</a>.</p>
<p>About a year ago, when I was lobbying for Elixir to be used in production, I ran some comparisons between two versions of our application (Ruby/Sinatra and Elixir/Plug) in Heroku, both on Heroku’s free tier and their high performance tier. Ours was a backend api used by another service, so I wanted to test rough real-world usage. Our Heroku dynos were ultimately served out of EC2 US-East, so I spun up an EC2 host to stress test the two implementations on the two performance tiers. Heroku performed quite well and handled our worker tasks within the primary dyno without issue.</p>
<p>Heroku <em>does</em> restart their dynos once a day at a random time. Not usually an issue, but something to be aware of. DNS CNAMEs and SSL termination are both easy to setup and update.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2388" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-2388" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2388"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="2390" data-post-id="2390">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="adamkittelson" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  adamkittelson
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve been hosting my side project with <a href="http://packet.net" rel="noopener nofollow ugc">packet.net</a>, they do bare metal servers with their <a href="https://www.packet.net/bare-metal/servers/type-0/" rel="noopener nofollow ugc">least expensive option</a> costing only 5 cents per minute.</p>
<p>I like being able to pop open :observer and see 4 schedulers on an unshared host for a little over 30 bucks a month.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2390" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-deployment-options/289/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-2390" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2390"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/289/load_more?page=4">Load more posts (37 remaining)</a>
</div></template></turbo-stream>