Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - dbf/team-container: A collection of containers to prepare a server for collaboration. · GitHub
Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dbf/team-container: A collection of containers to prepare a server for collaboration. · GitHub
Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dbf/team-container: A collection of containers to prepare a server for collaboration. · GitHub
Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - dbf/team-container: A collection of containers to prepare a server for collaboration. · GitHub
Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dbf/team-container: A collection of containers to prepare a server for collaboration. · GitHub
Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dbf/team-container: A collection of containers to prepare a server for collaboration. · GitHub
Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - dbf/team-container: A collection of containers to prepare a server for collaboration. · GitHub
Skip to content

Repository files navigation

team-container

Team-container is a collection of containers that set up your own collaboration server. This setup is meant to be used in conjunction with a magazine article in c't magazine. See (https://www.heise.de/select/ct/2020/9/2007712573850503640). The article is behind a paywall, but the setup works without the article.

Tools in this collection

Goal, Prerequisites and Architecture

The goal is to provide a private collaboration server for a small to medium sized team that provides essential services while leaving you in control of where the data are stored. The services are:

  • Nextcloud for sharing documents and calendars
  • Rocket.Chat for well organized browser based text chat. Apps for mobile platforms are available.
  • Jitsi Meet for browser based video conferencing. Apps for mobile platforms are available.
  • Openslides for management of assemblies for clubs and organizations
  • Plik is a scalable & friendly temporary file upload system (like wetransfer).

All you need is

  • A linux server, prefarably running Ubuntu 18.04 LTS or another Debian GNU/Linux derivate. There is a compatibility list for some hosting providers in the wiki.
  • A domain name, e.g. example.org and four subdomains pointing to your server, i.e. www.example.org, cloud.example.org, chat.example.org and video.example.org
  • basic experience with the linux terminal

Knowledge of container technology or other typical linux admin topics is not required.

The first container ((Kubernetes, Rancher, helm) you install contains Traefik. Traefik routes incoming traffic to either the web server nginx or one of the other three containers you will install subsequently. Each of those containers runs an instance of Nextloud, Rocket.Chat or Jitsi Meet. The routing decision is based on the server name specified when setting up the containers. All four servers should have the same domain name.

Roadmap / Contribute

A lot of improvements are on our agenda. Have a look at the Project board at GitHub and feel free to create an issue or PR!

Getting started

  • prepare a server with a current version of Linux server (tested with Ubuntu Server 18.04 LTS)
  • setup four dns entries for your server (e.g. www.example.org, cloud.example.org, chat.example.org, video.example.org)
  • clone this repository: git clone https://github.com/ct-open-source/team-container
  • navigate into the folder team-container
  • run sudo install.sh
  • open "values-setup.yaml". Enter your e-Mail address, set production to true, enter the main server name (e.g. www) and domain name.
  • install Traefik, the router: helm install setup team-setup --values values-setup.yaml
  • wait a few minutes - until https://yourserver.example.com returns the nginx welcome page using a valid Let's Encrypt TLS certificate. Traefik and nginx are now functional.

Install Nextcloud

  • open "values-nextcloud.yaml". Enter server name (e.g. cloud), domain name (e.g. example.org), a name for the Nextcloud administrator and the initial password for the Nextcloud administrator.
  • install Nextcloud: helm install nextcloud team-nextcloud --values values-nextcloud.yaml
  • After a few minutes your own Nextcloud server will be up and running under https://cloud.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users. Or

Install Rocket.Chat

  • open "values-chat.yaml". Enter server name (e.g. chat), domain name (e.g. example.org), a name for the Rocket.Chat administrator, the initial password for the Rocket.Chat administrator and his e-mail adress.
  • install Rocket.Chat: helm install chat team-chat --values values-chat.yaml
  • after a few minutes your own Rocket.Chat server will be up and running under https://chat.example.org. You can log in as the administrator with the password you provided in the last step. Proceed and add regular users.

Install Jitsi Meet

  • open "values-video.yaml". Enter server name (e.g. video) and domain name (e.g. example.org)
  • install Jitsi Meet: helm install video team-video --values values-video.yaml
  • after a few minutes your own Jitsi Meet video chat server will be up and running under https://video.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

Install Openslides (software for assemblies)

  • open "values-openslides.yaml". Enter server name (e.g. club) and domain name (e.g. example.org)
  • install Openslides: helm install openslides team-openslides --values values-openslides.yaml
  • after a few minutes your own Openslides server will be up and running under https://club.example.org.
  • please refer to the above mentioned project web sites for help on using the services.

To do / Known issues

  • not working with IPv6 (problems with certificate generation)

About

A collection of containers to prepare a server for collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages