Skip to content

Instantly share code, notes, and snippets.

@gauravtiwari
gauravtiwari / seaweedfs_owncloud.md
Created September 23, 2021 08:36 — forked from egg82/seaweedfs_owncloud.md
SeaweedFS + OwnCloud

A quick write-up on SeaweedFS + OwnCloud

This guide aims to take a look at a distributed, scalable SeaweedFS as a backend storage for an OwnCloud server. Why not NextCloud? Because NextCloud's S3 connector is outdated and not maintained, and won't work with SeaweedFS. Both OwnCloud and NextCloud have the same support and the same plugins. The only concern anyone has is some weird split that happened between the two years ago. It's fine.

This was a giant pain in the ass, but eventually I got it working. This is how.

Filesystem/Hardware

All servers start from fresh, clean installs of Ubuntu 18.04.3

This guide will use three seperate boxes (one master/OwnCloud and two slaves). I'm assuming there's spare, unformatted disks attached to the slaves. If not, ignore or change the section on mounting to fit your needs.

heroku create
heroku addons:create heroku-postgresql:hobby-dev
git push heroku master
@gauravtiwari
gauravtiwari / index.js
Created February 19, 2017 12:24
Counter index initializer
// Initialize the counter code when DOM is ready
import './style.sass';
import counter from './counter';
document.addEventListener('DOMContentLoaded', () => {
counter.initialize();
});
@gauravtiwari
gauravtiwari / style.sass
Created February 19, 2017 12:23
Counter style
$grey: #f2f2f2
.counter-wrapper
max-width: 500px
margin: 100px auto
padding: 10px
border: 1px solid $grey
form
@gauravtiwari
gauravtiwari / counter.js
Created February 19, 2017 12:01
Counter entry file
// Require or import the counter module
import '../counter';
@gauravtiwari
gauravtiwari / index.js
Created February 19, 2017 12:00
Initialise counter on DOM ready
// Initialize the counter code when DOM is ready
import counter from './counter';
document.addEventListener('DOMContentLoaded', () => {
counter.initialize();
});
@gauravtiwari
gauravtiwari / counter.js
Created February 19, 2017 11:59
A simple counter example using vanilla JS
// A simple counter example
// The setup will be more complicated in modern apps built using React
const incrementNode = document.getElementById('increment');
const decrementNode = document.getElementById('decrement');
const inputNode = document.getElementById('counter');
const counter = {
initialize() {
incrementNode.addEventListener('click', (event) => {
@gauravtiwari
gauravtiwari / production.js
Last active February 19, 2017 11:11
Production webpack config
// Note: You must restart bin/webpack-watcher for changes to take effect
var webpack = require('webpack')
var merge = require('webpack-merge')
var sharedConfig = require('./shared.js')
module.exports = merge(sharedConfig.config, {
output: { filename: '[name]-[hash].js' },
@gauravtiwari
gauravtiwari / development.js
Created February 19, 2017 11:10
Development webpack config
// Note: You must restart bin/webpack-watcher for changes to take effect
var webpack = require('webpack')
var merge = require('webpack-merge')
var sharedConfig = require('./shared.js')
module.exports = merge(sharedConfig.config, {
devtool: 'sourcemap',
@gauravtiwari
gauravtiwari / shared.js
Last active February 22, 2017 12:17
Shared webpack config
// Note: You must restart bin/webpack-watcher for changes to take effect
var path = require('path');
var glob = require('glob');
var extname = require('path-complete-extname');
var distPath = process.env.WEBPACK_DIST_PATH;
if (distPath === undefined) {
distPath = 'packs'
}