diff --git a/app/javascript/flavours/glitch/features/ui/components/header.js b/app/javascript/flavours/glitch/features/ui/components/header.js
-index d9ad94961..9a1f31531 100644
+index d9ad949611..436c001f74 100644
--- a/app/javascript/flavours/glitch/features/ui/components/header.js
+++ b/app/javascript/flavours/glitch/features/ui/components/header.js
-@@ -69,7 +69,6 @@ class Header extends React.PureComponent {
+@@ -2,7 +2,7 @@ import React from 'react';
+ import Logo from 'flavours/glitch/components/logo';
+ import { Link, withRouter } from 'react-router-dom';
+ import { FormattedMessage } from 'react-intl';
+-import { registrationsOpen, me } from 'flavours/glitch/initial_state';
++import { me } from 'flavours/glitch/initial_state';
+ import Avatar from 'flavours/glitch/components/avatar';
+ import Permalink from 'flavours/glitch/components/permalink';
+ import PropTypes from 'prop-types';
+@@ -38,7 +38,7 @@ class Header extends React.PureComponent {
+
+ render () {
+ const { signedIn } = this.context.identity;
+- const { location, openClosedRegistrationsModal } = this.props;
++ const { location } = this.props;
+
+ let content;
+
+@@ -50,26 +50,9 @@ class Header extends React.PureComponent {
+ >
+ );
+ } else {
+- let signupButton;
+-
+- if (registrationsOpen) {
+- signupButton = (
+-
+-
+-
+- );
+- } else {
+- signupButton = (
+-
+- );
+- }
+-
content = (
<>
@@ -23,12 +91,44 @@ index d9ad94961..9a1f31531 100644
);
}
diff --git a/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js b/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js
-index e8023803f..d8c332f08 100644
+index c0d62aca00..eda16f2654 100644
--- a/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js
+++ b/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js
-@@ -32,7 +32,6 @@ const SignInBanner = () => {
+@@ -1,38 +1,11 @@
+-import React, { useCallback } from 'react';
++import React from 'react';
+ import { FormattedMessage } from 'react-intl';
+-import { useDispatch } from 'react-redux';
+-import { registrationsOpen } from 'flavours/glitch/initial_state';
+-import { openModal } from 'flavours/glitch/actions/modal';
+
+ const SignInBanner = () => {
+- const dispatch = useDispatch();
+-
+- const openClosedRegistrationsModal = useCallback(
+- () => dispatch(openModal('CLOSED_REGISTRATIONS')),
+- [dispatch],
+- );
+-
+- let signupButton;
+-
+- if (registrationsOpen) {
+- signupButton = (
+-
+-
+-
+- );
+- } else {
+- signupButton = (
+-
+- );
+- }
+-
+ return (
diff --git a/patches/hide-signup.patch b/patches/hide-signup.patch
index 5f33b4e..b49c702 100644
--- a/patches/hide-signup.patch
+++ b/patches/hide-signup.patch
@@ -1,8 +1,39 @@
diff --git a/app/javascript/mastodon/features/interaction_modal/index.js b/app/javascript/mastodon/features/interaction_modal/index.js
-index d4535378f..153c50991 100644
+index d4535378f0..285fe2ba3a 100644
--- a/app/javascript/mastodon/features/interaction_modal/index.js
+++ b/app/javascript/mastodon/features/interaction_modal/index.js
-@@ -145,7 +145,6 @@ class InteractionModal extends React.PureComponent {
+@@ -1,7 +1,6 @@
+ import React from 'react';
+ import PropTypes from 'prop-types';
+ import { FormattedMessage } from 'react-intl';
+-import { registrationsOpen } from 'mastodon/initial_state';
+ import { connect } from 'react-redux';
+ import Icon from 'mastodon/components/icon';
+ import classNames from 'classnames';
+@@ -118,22 +117,6 @@ class InteractionModal extends React.PureComponent {
+ break;
+ }
+
+- let signupButton;
+-
+- if (registrationsOpen) {
+- signupButton = (
+-
+-
+-
+- );
+- } else {
+- signupButton = (
+-
+- );
+- }
+-
+ return (
+
+
+@@ -145,7 +128,6 @@ class InteractionModal extends React.PureComponent {
@@ -11,10 +42,47 @@ index d4535378f..153c50991 100644
diff --git a/app/javascript/mastodon/features/ui/components/header.js b/app/javascript/mastodon/features/ui/components/header.js
-index 1384bebda..89becd19b 100644
+index 1384bebda0..10d6f70bb7 100644
--- a/app/javascript/mastodon/features/ui/components/header.js
+++ b/app/javascript/mastodon/features/ui/components/header.js
-@@ -68,7 +68,6 @@ class Header extends React.PureComponent {
+@@ -2,7 +2,7 @@ import React from 'react';
+ import Logo from 'mastodon/components/logo';
+ import { Link, withRouter } from 'react-router-dom';
+ import { FormattedMessage } from 'react-intl';
+-import { registrationsOpen, me } from 'mastodon/initial_state';
++import { me } from 'mastodon/initial_state';
+ import Avatar from 'mastodon/components/avatar';
+ import PropTypes from 'prop-types';
+ import { connect } from 'react-redux';
+@@ -37,7 +37,7 @@ class Header extends React.PureComponent {
+
+ render () {
+ const { signedIn } = this.context.identity;
+- const { location, openClosedRegistrationsModal } = this.props;
++ const { location } = this.props;
+
+ let content;
+
+@@ -49,26 +49,9 @@ class Header extends React.PureComponent {
+ >
+ );
+ } else {
+- let signupButton;
+-
+- if (registrationsOpen) {
+- signupButton = (
+-
+-
+-
+- );
+- } else {
+- signupButton = (
+-
+- );
+- }
+-
content = (
<>
@@ -23,19 +91,51 @@ index 1384bebda..89becd19b 100644
);
}
diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.js
-index 8bd32edf9..f11ab1893 100644
+index 86fcc11b56..eda16f2654 100644
--- a/app/javascript/mastodon/features/ui/components/sign_in_banner.js
+++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.js
-@@ -32,7 +32,6 @@ const SignInBanner = () => {
+@@ -1,38 +1,11 @@
+-import React, { useCallback } from 'react';
++import React from 'react';
+ import { FormattedMessage } from 'react-intl';
+-import { useDispatch } from 'react-redux';
+-import { registrationsOpen } from 'mastodon/initial_state';
+-import { openModal } from 'mastodon/actions/modal';
+
+ const SignInBanner = () => {
+- const dispatch = useDispatch();
+-
+- const openClosedRegistrationsModal = useCallback(
+- () => dispatch(openModal('CLOSED_REGISTRATIONS')),
+- [dispatch],
+- );
+-
+- let signupButton;
+-
+- if (registrationsOpen) {
+- signupButton = (
+-
+-
+-
+- );
+- } else {
+- signupButton = (
+-
+- );
+- }
+-
+ return (
);
};
diff --git a/app/views/auth/shared/_links.html.haml b/app/views/auth/shared/_links.html.haml
-index f078e2f7e..6e106cd92 100644
+index f078e2f7ec..6e106cd92d 100644
--- a/app/views/auth/shared/_links.html.haml
+++ b/app/views/auth/shared/_links.html.haml
@@ -5,14 +5,8 @@
diff --git a/scripts/backup.sh b/scripts/backup.sh
index 8b3b218..7dc1f0e 100755
--- a/scripts/backup.sh
+++ b/scripts/backup.sh
@@ -72,7 +72,7 @@ if [ -n "${BACKUP_S3_BUCKET:+x}" ] && command -v s3cmd >/dev/null 2>&1; then
echo "* Uploading to S3..."
sudo s3cmd sync --delete-removed "$BACKUPS_ROOT/" "s3://$BACKUP_S3_BUCKET" || :
else
- echo "⚠ Skipping S3 upload; check that 's3cmd' is present in \$PATH, and \$BACKUP_S3_BUCKET is set."
+ echo "⚠ Skipping S3 upload; check that 's3cmd' is installed, and \$BACKUP_S3_BUCKET is set."
fi
echo "* Removing temp files..."
diff --git a/scripts/install.sh b/scripts/install.sh
index 26e484b..60b530a 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -281,20 +281,21 @@ tootctl accounts create \
# create directory for cron logdrain
as_mastodon mkdir -p "$LOGS_ROOT"
-as_mastodon touch "$LOGS_ROOT"/cron.log
+as_mastodon touch "$LOGS_ROOT"/cron-{purge,backup}.log
# set cleanup & backup tasks to run weekly
# https://docs.joinmastodon.org/admin/setup/#cleanup
(
sudo crontab -l
echo -e "\n$INSTALLER_WUZ_HERE
-@weekly bash -c \"$UTILS_ROOT/scripts/purge.sh >> $LOGS_ROOT/cron.log 2>&1\"
-@weekly bash -c \"$UTILS_ROOT/scripts/backup.sh >> $LOGS_ROOT/cron.log 2>&1\"
+# purge old media weekly
+@weekly bash -c \"$UTILS_ROOT/scripts/purge.sh >> $LOGS_ROOT/cron-purge.log 2>&1\"
+# create & rotate backups daily
+@daily bash -c \"$UTILS_ROOT/scripts/backup.sh >> $LOGS_ROOT/cron-backup.log 2>&1\"
-# automatically renew Let's Encrypt certificates
-# https://certbot.eff.org/instructions?ws=nginx&os=pip
-0 0,12 * * * root /opt/certbot/bin/python -c \"import random; import time; time.sleep(random.random() * 3600)\" && certbot renew -q
-"
+# automatically renew Let's Encrypt certificates:
+# https://certbot.eff.org/instructions?ws=other&os=pip
+0 0,12 * * * /opt/certbot/bin/python -c \"import random; import time; time.sleep(random.random() * 3600)\" && certbot renew -q"
) | sudo crontab -
echo "🎉 done! don't forget to fill in .env.production with optional credentials"