# History ## 0.25.0 Install/update via the bootstrap script: ```shell wget https://raw.githubusercontent.com/dokku/dokku/v0.25.0/bootstrap.sh sudo DOKKU_TAG=v0.25.0 bash bootstrap.sh ``` See the [0.25.0 migration guide](/docs/appendices/0.25.0-migration-guide.md) for more information on migrating to 0.25.0. ### Bug Fixes - #4733: @josegonzalez Force grep to run in quiet mode in domains:add call - #4732: @josegonzalez Ensure image cleanup does not impact the stack image and refactor container/image cleanup - #4731: @josegonzalez Respect debconf selections where possible - #4729: @josegonzalez Correct count check for user-auth trigger - #4721: @josegonzalez Recursively sync submodules - #4717: @josegonzalez Silence stderr when checking for ufw on debian systems - #4716: @josegonzalez Suppress dos2unix stderr output during Dockerfile builds - #4686: @josegonzalez Ensure repository is bare when calling git:sync - #4684: @josegonzalez Install gpg-agent in bootstrap script - #4683: @josegonzalez Strip published port flags when triggering deploy tasks - #4651: @josegonzalez Do not attempt to retire when there was no pre-existing container - #4639: @josegonzalez Correct path for azure-vm releases ### New Features - #4730: @josegonzalez Execute motd at the end of the install - #4719: @josegonzalez Add support for routing an app to a specified host:port - #4715: @josegonzalez Switch from xip.io to sslip.io - #4460: @josegonzalez Implement registry plugin - #4711: @josegonzalez Enable installing on RPM systems where bind-utils is bindutils - #4687: @josegonzalez Output message explaining how to remove a deploy lock when a lock is encountered - #4682: @josegonzalez Properly space report output - #4502: @josegonzalez Add monorepo support - #4509: @josegonzalez Add ability to specify initial network - #4641: @dbazile Add initial support for installing onto Fedora ### Refactors - #4508: @josegonzalez Add support for the formation key in app.json - #4507: @josegonzalez Drop support for Ubuntu 16.04 ### Documentation - #4723: @josegonzalez Clarify buildkit instructions - #4718: @josegonzalez Update link to azure installation on homepage - #4714: @josegonzalez Swap from freenode to libera.chat - #4712: @josegonzalez Clarify the shape of the command that should be entered in app.json for a cron task - #4709: @josegonzalez Add migration note for deprecation of ubuntu 16.04 - #4697: @josegonzalez Specify that run containers use the same image - #4688: @josegonzalez Add a note on recovering networks - #4689: @josegonzalez Add a note about wildcards in the installation doc page - #4680: @josegonzalez Cleanup markdown lint errors - #4679: @josegonzalez Cleanup markdown lint errors - #4678: @josegonzalez Cleanup markdown lint errors - #4677: @josegonzalez Cleanup markdown lint errors - #4672: @bjab Fix typo in pack builder docs - #4668: @RealOrangeOne Make example gitlab-ci script a list - #4673: @eltociear Fix comment typo in dokku binary - #4661: @dy3l Fix case style - #4647: @AngCosmin Fixed unable to find version `v1` for official Github Action ### Tests - #4693: @josegonzalez Add package.lock for test app - #4685: @josegonzalez Remove ci skip note in PULL_REQUEST_TEMPLATE.md - #4681: @josegonzalez Ignore duplication warnings in codacy - #4644: @josegonzalez Update unit test publisher to latest ### Other - #4726: @josegonzalez Drop web installer in favor of setup via cli - #4713: @josegonzalez Make heroku-20/focal the default stack for herokuish builds - #4707: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 195 to 196 in /tests/apps/php - #4701: @josegonzalez Revamp dokku run command - #4671: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 193 to 195 in /tests/apps/php - #4674: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.5 to 11.0.6 in /tests/apps/java - #4652: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.4 to 11.0.5 in /tests/apps/java - #4653: @dependabot[bot] chore(deps): bump maven-dependency-plugin from 3.1.2 to 3.2.0 in /tests/apps/java - #4648: @dependabot[bot] chore(deps): bump django from 3.1.9 to 3.1.12 in /tests/apps/dockerfile-release - #4645: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.3 to 11.0.4 in /tests/apps/java - #4642: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 192 to 193 in /tests/apps/php
342 lines
18 KiB
HTML
342 lines
18 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
|
<meta name="description" content="">
|
|
<meta name="author" content="">
|
|
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
|
|
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
|
|
|
|
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-57x57.png">
|
|
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-60x60.png">
|
|
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-72x72.png">
|
|
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-76x76.png">
|
|
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-114x114.png">
|
|
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-120x120.png">
|
|
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-144x144.png">
|
|
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-152x152.png">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/apple-touch-icon-180x180.png">
|
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
|
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/manifest.json">
|
|
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/favicon.ico">
|
|
<meta name="apple-mobile-web-app-title" content="Dokku">
|
|
<meta name="application-name" content="Dokku">
|
|
<meta name="msapplication-TileColor" content="#da532c">
|
|
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/mstile-144x144.png">
|
|
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/favicons/browserconfig.xml">
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
|
|
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.25.0/docs/assets/style.css" rel="stylesheet">
|
|
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
|
|
<style>
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="header">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div>
|
|
<h1 class="heading navbar-brand">
|
|
<a href="/{{NAME}}/">Dokku</a>
|
|
</h1>
|
|
<ul class="nav nav-pills pull-xs-right">
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="https://dokku.github.io/">Blog</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="https://github.com/dokku/dokku/">Code</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="/{{NAME}}/getting-started/installation/">Docs</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="https://glider-slackin.herokuapp.com/">Slack</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="https://github.com/dokku/dokku/discussions">Forums</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="blurb">
|
|
<div class="container">
|
|
<div class="row">
|
|
<h2>The smallest PaaS implementation you've ever seen</h2>
|
|
<p>Dokku helps you build and manage the lifecycle of applications</p>
|
|
<div class="blurb-buttons">
|
|
<a class="btn btn-lg btn-warning" href="/{{NAME}}/getting-started/installation/">View Documentation</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container marketing">
|
|
<div class="quickstart-code">
|
|
<p class="title">Quick-start Instructions</p>
|
|
<div class="tabs">
|
|
<div data-tab="curl" class="tab tab-curl tab-active">curl | bash</div>
|
|
<div data-tab="apt" class="tab tab-apt">apt</div>
|
|
<div data-tab="arch" class="tab tab-arch">arch</div>
|
|
</div>
|
|
<div class="shell shell-curl shell-active">
|
|
<p class="line">
|
|
<span class="output"> # for debian systems, installs dokku via apt-get</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.25.0/bootstrap.sh</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">sudo DOKKU_TAG=v0.25.0 bash bootstrap.sh</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="output"> # go to your server's IP and follow the web installer</span>
|
|
</p>
|
|
</div>
|
|
|
|
<div class="shell shell-apt">
|
|
<p class="line">
|
|
<span class="output"> # install docker</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">wget -nv -O - https://get.docker.com/ | sh</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="output"> # setup dokku apt repository</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">export SOURCE="https://packagecloud.io/dokku/dokku/ubuntu/"</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">export OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">echo "bionic focal" | grep -q "$OS_ID" || OS_ID="bionic"</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">echo "deb $SOURCE $OS_ID main" | tee /etc/apt/sources.list.d/dokku.list</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">apt-get update</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="output"> # install dokku</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">apt-get install dokku</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">dokku plugin:install-dependencies --core <span class="output"># run with root!</span></span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="output"> # go to your server's IP and follow the web installer</span>
|
|
</p>
|
|
</div>
|
|
|
|
<div class="shell shell-arch">
|
|
<p class="line">
|
|
<span class="output"> # install dokku via yay</span>
|
|
</p>
|
|
<p class="line">
|
|
<span class="path"></span>
|
|
<span class="prompt">$</span>
|
|
<span class="command">yay -S dokku</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="alternate-instructions">
|
|
<p>Hate <code>curl | bash</code>? See our official <a href="https://github.com/Azure/azure-quickstart-templates/tree/master/application-workloads/dokku/dokku-vm" target="_blank">Azure</a>, <a href="https://marketplace.digitalocean.com/apps/dokku?refcode=fe06b043a083" target="_blank">DigitalOcean</a>, and <a href="/{{NAME}}~{{REF}}/getting-started/install/dreamhost/">DreamHost Cloud</a> instructions.</p>
|
|
<p>Still no love? <a href="https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md" target="_blank">Contributions welcome</a>!</a></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container-fluid slack-channel">
|
|
Have a question? Join us in our public slack channel!
|
|
|
|
<div class="inline-container">
|
|
<a class="button slack-button" href="https://glider-slackin.herokuapp.com/">
|
|
<img src="./assets/slack-logo.png" alt="Slack Logo">
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container marketing">
|
|
<!-- START THE FEATURETTES -->
|
|
|
|
<div class="row featurette">
|
|
<div class="col-md-7">
|
|
<h2 class="featurette-heading">Own Your PaaS. <span class="text-muted">Infrastructure at a fraction of the cost.</span></h2>
|
|
<p class="lead">Powered by Docker, you can install Dokku on any hardware. Use it on inexpensive cloud providers. Use the extra cash to buy a pony or feed kittens. You'll save tens of dollars a year on your dog photo sharing website.</p>
|
|
</div>
|
|
<div class="col-md-5">
|
|
<img class="featurette-image img-responsive center-block" alt="Docker Logo" src="./assets/docker.png">
|
|
</div>
|
|
</div>
|
|
|
|
<hr class="featurette-divider">
|
|
|
|
<div class="row featurette">
|
|
<div class="col-md-7 col-md-push-5">
|
|
<h2 class="featurette-heading">Easy Git Deploys. <span class="text-muted">From your command-line to the cloud.</span></h2>
|
|
<p class="lead">Once it's set up on a host, you can push Heroku-compatible applications to it via Git. They'll build using Heroku buildpacks and then run in isolated containers. The end result is your own, single-host version of Heroku.</p>
|
|
</div>
|
|
<div class="col-md-5 col-md-pull-7">
|
|
<img class="featurette-image img-responsive center-block" alt="Git Logo" src="./assets/git.png">
|
|
</div>
|
|
</div>
|
|
|
|
<hr class="featurette-divider">
|
|
|
|
<div class="row featurette">
|
|
<div class="col-md-7">
|
|
<h2 class="featurette-heading">Extensible Platform. <span class="text-muted">Customize your PaaS.</span></h2>
|
|
<p class="lead">Write dokku plugins in any language. Share them online with others, and extend those already available. Dokku's simple core is easy to hack and add the features you need to get your job done.</p>
|
|
</div>
|
|
<div class="col-md-5">
|
|
<img class="featurette-image img-responsive center-block" alt="Extend Logo" src="./assets/extend.png">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container-fluid slack-channel sponsors">
|
|
<h3>Sponsor Dokku</h3>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
|
|
<p>Here are a few of our sponsors and backers. Join them and <a href="https://opencollective.com/dokku#sponsor" target="_blank">become a sponsor</a> on OpenCollective!</p>
|
|
|
|
<p class="sponsor">
|
|
<a href="https://opencollective.com/dokku/sponsor/0/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/0/avatar.svg" style="max-width: 192px"></a>
|
|
<a href="https://opencollective.com/dokku/sponsor/1/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/1/avatar.svg" style="max-width: 192px"></a>
|
|
<a href="https://opencollective.com/dokku/sponsor/2/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/2/avatar.svg" style="max-width: 192px"></a>
|
|
<a href="https://opencollective.com/dokku/sponsor/3/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/3/avatar.svg" style="max-width: 192px"></a>
|
|
</p>
|
|
|
|
<p class="backer">
|
|
<a href="https://opencollective.com/dokku/backer/0/website" target="_blank"><img src="https://opencollective.com/dokku/backer/0/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/1/website" target="_blank"><img src="https://opencollective.com/dokku/backer/1/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/2/website" target="_blank"><img src="https://opencollective.com/dokku/backer/2/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/3/website" target="_blank"><img src="https://opencollective.com/dokku/backer/3/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/4/website" target="_blank"><img src="https://opencollective.com/dokku/backer/4/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/5/website" target="_blank"><img src="https://opencollective.com/dokku/backer/5/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/6/website" target="_blank"><img src="https://opencollective.com/dokku/backer/6/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/7/website" target="_blank"><img src="https://opencollective.com/dokku/backer/7/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/8/website" target="_blank"><img src="https://opencollective.com/dokku/backer/8/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/9/website" target="_blank"><img src="https://opencollective.com/dokku/backer/9/avatar.svg"></a>
|
|
</p>
|
|
<p class="backer">
|
|
<a href="https://opencollective.com/dokku/backer/10/website" target="_blank"><img src="https://opencollective.com/dokku/backer/10/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/11/website" target="_blank"><img src="https://opencollective.com/dokku/backer/11/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/12/website" target="_blank"><img src="https://opencollective.com/dokku/backer/12/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/13/website" target="_blank"><img src="https://opencollective.com/dokku/backer/13/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/14/website" target="_blank"><img src="https://opencollective.com/dokku/backer/14/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/15/website" target="_blank"><img src="https://opencollective.com/dokku/backer/15/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/16/website" target="_blank"><img src="https://opencollective.com/dokku/backer/16/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/17/website" target="_blank"><img src="https://opencollective.com/dokku/backer/17/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/18/website" target="_blank"><img src="https://opencollective.com/dokku/backer/18/avatar.svg"></a>
|
|
<a href="https://opencollective.com/dokku/backer/19/website" target="_blank"><img src="https://opencollective.com/dokku/backer/19/avatar.svg"></a>
|
|
</p>
|
|
|
|
<p>You can also <a href="https://www.patreon.com/dokku" target="_blank">back us anonymously</a> on Patreon.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<footer>
|
|
<p>© 2013-2020 Dokku</p>
|
|
</footer>
|
|
</div>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function (e) {
|
|
var addClass = function (el, className) {
|
|
if (el.classList) {
|
|
el.classList.add(className);
|
|
} else {
|
|
el.className += ' ' + className;
|
|
}
|
|
},
|
|
addListener = function (elem, type, fn) {
|
|
if (elem.addEventListener) {
|
|
elem.addEventListener(type, fn, false);
|
|
} else if (elem.attachEvent) {
|
|
elem.attachEvent("on" + type, function() {
|
|
return fn.call(elem, window.event);
|
|
});
|
|
} else {
|
|
elem["on" + type] = fn;
|
|
}
|
|
},
|
|
hasClass = function(el, className) {
|
|
if (el.classList) {
|
|
return el.classList.contains(className);
|
|
} else {
|
|
return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);
|
|
}
|
|
},
|
|
removeClass = function(el, className) {
|
|
if (el.classList) {
|
|
el.classList.remove(className);
|
|
} else {
|
|
el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');;
|
|
}
|
|
},
|
|
activateTab = function(tab) {
|
|
removeClass(document.querySelectorAll('.shell-active')[0], 'shell-active');
|
|
removeClass(document.querySelectorAll('.tab-active')[0], 'tab-active');
|
|
addClass(document.querySelectorAll('.shell-' + tab)[0], 'shell-active');
|
|
addClass(document.querySelectorAll('.tab-' + tab)[0], 'tab-active');
|
|
window.location.hash = '#install-' + tab;
|
|
};
|
|
|
|
var hash = window.location.hash.replace('#install-', '');
|
|
if (['curl', 'apt', 'arch'].indexOf(hash) !== -1) {
|
|
activateTab(hash);
|
|
}
|
|
|
|
Array.prototype.forEach.call(document.querySelectorAll('.tab'), function (el, i) {
|
|
addListener(el, 'click', function(e) {
|
|
activateTab(this.getAttribute('data-tab'));
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|