nextcloudpi

下一页CloudPi获得远程更新,记录到RAM,便捷的WiFi等

最新版本 下一页CloudPi 出来了!

用户最明显的变化是 远程更新.

随着新版本的推出,我们将可以选择直接从互联网升级我们的私有云。

这意味着从现在开始,用户将更容易获得最新的好东西,而不必从头开始。

同样,由于最常见的配置涉及使用外部USB驱动器,因此有许多新选项可以实现更好的设置。

远程更新

这是此版本的关键结构更改。

下一页CloudPi将进入 的github 获取NextCloudPi的更新,并在登录时警告用户。

用户可以通过以下方式轻松升级 nextcloudpi配置 或使用新命令

sudo ncp-update

pi@raspberrypi:~ $ sudo ncp-update
Downloading updates
Performing updates
Installing nc-database
Installing nc-ramlogs
Installing nc-swapfile
Installing nc-wifi
Get:1 http://mirrordirector.raspbian.org jessie InRelease [14.9 kB]
Get:2 http://mirrordirector.raspbian.org stretch InRelease [15.0 kB]
Get:3 http://archive.raspberrypi.org jessie InRelease [22.9 kB]
Get:4 http://mirrordirector.raspbian.org jessie/main armhf Packages [8,981 kB]
Get:5 http://archive.raspberrypi.org jessie/main armhf Packages [145 kB]
Get:6 http://mirrordirector.raspbian.org jessie/contrib armhf Packages [37.5 kB]
Get:7 http://mirrordirector.raspbian.org jessie/non-free armhf Packages [70.3 kB]
Get:8 http://mirrordirector.raspbian.org jessie/rpi armhf Packages [1,356 B]
Get:9 http://mirrordirector.raspbian.org stretch/main armhf Packages [11.7 MB]

简易WiFi

下一页CloudPi准备通过WiFi连接!

通过以下方式配置您的访问点

sudo nextcloudpi配置

要么

sudo wicd-curses

RAM日志

此设置将日志移至RAM,这将导致以下后果

  • 更好的性能:由于记录到SD的速度较慢。
  • SD卡的使用寿命更长:由于不断减少将记录信息写入SD所产生的磨损大大减少了。
  • 它消耗了更多的RAM:在30天正常运行时间的Raspberry Pi中,内存约为30 MB。
  • 重新启动后,日志将丢失。
  • 登录到内部子目录的任何新软件包 / var / log 将要求在以下位置创建文件夹 每一个 开机。

例如,在Apache中添加了新的预执行命令

ExecStartPre=/bin/mkdir -p / var / log/apache2

如果这对您来说太高级了,请不要使用此功能。

如果您想尝试并遇到麻烦,可以通过以下方式将其停用 nextcloudpi配置.

配置交换文件

由于许多人将永久性USB连接到Raspberry Pi,因此我们可以在其中拥有一个很大的交换文件。

首先,将USB驱动器配置为在启动时安装 / etc / fstab。然后,通过配置 nextcloudpi配置.

您可以使用以下方法验证结果

swapon -s

移动数据库

由于许多人将永久性USB连接到Raspberry Pi,因此我们可以在其中拥有数据库。

出于与上述相同的原因,这将改善我们的SD卡寿命,并且同样,我们的数据也将更加安全,因为与Raspberry Pi中的SD卡相比,USB驱动器不容易损坏。

提示:除非您停止使用Raspberry Pi,否则请勿将其拔下‘sudo halt’。这是SD卡损坏的秘诀。

#!/bin/bash

# 下一页cloud installation on Raspbian 
# Tested with 2017-03-02-raspbian-jessie-lite.img
#
# Copyleft 2017 通过 Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com>
# GPL licensed (see end of file) * Use at your own risk!
#
# Usage:
# 
#   ./installer.sh no-ip.sh <IP> (<img>)
#
# See installer.sh instructions for details
#
# Notes:
#   Upon each necessary restart, the system will cut the SSH session, therefore
#   it is required to save the state of the installation. See variable $STATE_FILE
#   It will be necessary to invoke this a number of times for a complete installation
#
# More at //crazypuppy.net/2017/02/13/nextcloud-ready-raspberry-pi-image/
#

VER=11.0.1
ADMINUSER_=admin
DBADMIN_=ncadmin
DBPASSWD_=ownyourbits
MAXFILESIZE_=768M
MAXTRANSFERTIME_=3600
OPCACHEDIR=/var/www/nextcloud/data/.opcache
CONFDIR=/usr/local/etc/nextcloudpi-config.d/
STATE_FILE=/home/pi/.installation_state
APTINSTALL="apt-get install -y --no-install-recommends"


install()
{
test -f $STATE_FILE && STATE=$( cat $STATE_FILE 2>/dev/null )
if [ "$STATE" == "" ]; then

  # RESIZE IMAGE
  ##########################################

  SECTOR=$( fdisk -l /dev/sda | grep Linux | awk '{ print $2 }' )
  echo -e "d\n2\nn\np\n2\n$SECTOR\n\nw\n" | fdisk /dev/sda || true

  echo 0 > $STATE_FILE 
  nohup reboot &>/dev/null &
elif [ "$STATE" == "0" ]; then

  # UPDATE EVERYTHING
  ##########################################
  resize2fs /dev/sda2

  apt-get update
  apt-get upgrade 
  apt-get dist-upgrade 
  $APTINSTALL rpi-update 
  echo -e "y\n" | rpi-update

  echo 1 > $STATE_FILE 
  nohup reboot &>/dev/null &
elif [ "$STATE" == "1" ]; then

  # GET STRETCH SOURCES FOR HTTP2 AND PHP7
  ##########################################

  echo "deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi" >> /etc/apt/sources.list
  cat > /etc/apt/preferences <<EOF
Package: *
Pin: release n=jessie
Pin-Priority: 600
EOF
  apt-get update

  # INSTALL FROM STRETCH
  ##########################################

  $APTINSTALL -t stretch apache2
  $APTINSTALL -t stretch php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache php7.0-mbstring php7.0-xml php7.0-zip 
  $APTINSTALL php7.0-APC 
  $APTINSTALL libxml2-dev php-zip php-dom php-xmlwriter php-xmlreader php-gd php-curl php-mbstring 

  debconf-set-selections <<< "mariadb-server-5.5 mysql-server/root_password password $DBPASSWD_"
  debconf-set-selections <<< "mariadb-server-5.5 mysql-server/root_password_again password $DBPASSWD_"
  $APTINSTALL mariadb-server php7.0-mysql 

  # CONFIGURE APACHE AND PHP7
  ##########################################

  cat >/etc/apache2/conf-available/http2.conf <<EOF
Protocols h2 h2c http/1.1

H2Push          on
H2PushPriority  *                       after
H2PushPriority  text/css                before
H2PushPriority  image/jpeg              after   32
H2PushPriority  image/png               after   32
H2PushPriority  application/javascript  interleaved

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'
EOF

  cat >> /etc/apache2/apache2.conf <<EOF
<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
EOF

  cat > /etc/php/7.0/mods-available/apcu.ini <<EOF
extension=apcu.so
apc.enable_cli=0
apc.shm_size=256M
apc.ttl=7200
apc.gc_ttl=3600
apc.entries_hint=4096
apc.slam_defense=1
apc.serializer=igbinary
EOF

  cat > /etc/php/7.0/mods-available/opcache.ini <<EOF
zend_extension=opcache.so
opcache.file_cache=$OPCACHEDIR;
opcache.fast_shutdown=1
EOF

  a2enmod http2
  a2enconf http2 
  a2enmod proxy_fcgi setenvif
  a2enconf php7.0-fpm
  a2enmod rewrite
  a2enmod headers
  a2enmod env
  a2enmod dir
  a2enmod mime
  a2enmod ssl

  echo 2 > $STATE_FILE 
  nohup reboot &>/dev/null &

elif [ "$STATE" == "2" ]; then
  # INSTALL NEXTCLOUD
  ##########################################

  cd /var/www/
  wget //download.nextcloud.com/server/releases/nextcloud-$VER.tar.bz2 -O nextcloud.tar.bz2
  tar -xvf nextcloud.tar.bz2
  rm nextcloud.tar.bz2

  ocpath='/var/www/nextcloud'
  htuser='www-data'
  htgroup='www-data'
  rootuser='root'

  printf "Creating possible missing Directories\n"
  mkdir -p $ocpath/data
  mkdir -p $ocpath/updater
  mkdir -p $OPCACHEDIR

  printf "chmod Files and Directories\n"
  find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
  find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

  printf "chown Directories\n"
  # recommended defaults do not play well with updater app
  # re-check this with 每一个 new version
  #chown -R ${rootuser}:${htgroup} ${ocpath}/
  chown -R ${htuser}:${htgroup} ${ocpath}/
  chown -R ${htuser}:${htgroup} ${ocpath}/apps/
  chown -R ${htuser}:${htgroup} ${ocpath}/config/
  chown -R ${htuser}:${htgroup} ${ocpath}/data/
  chown -R ${htuser}:${htgroup} ${ocpath}/themes/
  chown -R ${htuser}:${htgroup} ${ocpath}/updater/
  chown -R ${htuser}:${htgroup} $OPCACHEDIR

  chmod +x ${ocpath}/occ

  printf "chmod/chown .htaccess\n"
  if [ -f ${ocpath}/.htaccess ]; then
    # breaks updater, see above
    #chmod 0644 ${ocpath}/.htaccess
    chmod 0664 ${ocpath}/.htaccess
    chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
  fi
  if [ -f ${ocpath}/data/.htaccess ]; then
    chmod 0644 ${ocpath}/data/.htaccess
    chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
  fi

cat > /etc/apache2/sites-available/000-default.conf <<'EOF'
<VirtualHost _default_:80>
  DocumentRoot /var/www/nextcloud
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) //%{SERVER_NAME}/$1 [R,L]
  </IfModule>
</VirtualHost>
EOF

cat > /etc/apache2/sites-available/nextcloud.conf <<'EOF'
<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    DocumentRoot /var/www/nextcloud
    CustomLog /var/www/nextcloud/data/access.log combined
    ErrorLog /var/www/nextcloud/data/error.log
    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
  </VirtualHost>
  <Directory /var/www/nextcloud/>
    Options +FollowSymlinks
    AllowOverride All
    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
</IfModule>
EOF
  a2ensite nextcloud

  mysql -u root -p$DBPASSWD_ <<EOF
CREATE DATABASE nextcloud;
CREATE USER '$DBADMIN_'@'localhost' IDENTIFIED BY '$DBPASSWD_';
GRANT ALL PRIVILEGES ON nextcloud.* TO $DBADMIN_@localhost;
EXIT
EOF

  # NEXTCLOUDPI-CONFIG
  ##########################################

  $APTINSTALL dialog
  mkdir -p $CONFDIR
  sed -i '/Change User Password/i"0 下一页CloudPi Configuration" "Configuration of 下一页CloudPi" \\\\'  /usr/bin/raspi-config
  sed -i '/1\\\\ \*) do_change_pass ;;/i0\\\\ *) nextcloudpi配置 ;;'                              /usr/bin/raspi-config

  # NEXTCLOUDPI MOTD
  ##########################################
  mkdir /etc/update-motd.d
  rm /etc/motd
  ln -s /var/run/motd /etc/motd

  cat > /etc/update-motd.d/10logo <<EOF
#!/bin/sh
echo
cat /usr/local/etc/ncp-ascii.txt
EOF

  cat > /etc/update-motd.d/20updates <<'EOF'
#!/bin/bash
/usr/local/bin/ncp-check-updates
EOF
  chmod a+x /etc/update-motd.d/*

  # NEXTCLOUDPI UPDATES
  ##########################################
  $APTINSTALL 吉特

  cat > /usr/local/bin/ncp-check-updates <<'EOF'
#!/bin/bash

NEED_UPDATE=false
VERFILE=/var/run/.ncp-latest-version

if test -f $VERFILE && grep -qP "v\d+\.\d+\.\d+" $VERFILE; then

  MAJOR=$( grep -oP "\d+\.\d+\.\d+" $VERFILE | cut -d. -f1 )
  MINOR=$( grep -oP "\d+\.\d+\.\d+" $VERFILE | cut -d. -f2 )
  PATCH=$( grep -oP "\d+\.\d+\.\d+" $VERFILE | cut -d. -f3 )

  MAJ=$( grep -oP "\d+\.\d+\.\d+" /usr/local/etc/ncp-version | cut -d. -f1 )
  MIN=$( grep -oP "\d+\.\d+\.\d+" /usr/local/etc/ncp-version | cut -d. -f2 )
  PAT=$( grep -oP "\d+\.\d+\.\d+" /usr/local/etc/ncp-version | cut -d. -f3 )

  if [[ $MAJOR > $MAJ ]]; then
    NEED_UPDATE=true
  elif [[ $MAJOR == $MAJ ]] && [[ $MINOR > $MIN ]]; then
    NEED_UPDATE=true
  elif [[ $MAJOR == $MAJ ]] && [[ $MINOR == $MIN ]] && [[ $PATCH > $PAT ]]; then
    NEED_UPDATE=true
  fi
fi

if $NEED_UPDATE; then
  echo -e "\nNextCloudPi \e[1m$( cat $VERFILE )\e[0m available!!"
  echo -e "update through 'nextcloudpi-config' 要么  type 'sudo ncp-update'" 
else
  echo -e "\nNextCloudPi \e[1m$( cat /usr/local/etc/ncp-version )\e[0m is up to date"
fi
EOF
  chmod a+x /usr/local/bin/ncp-check-updates


  cat > /etc/cron.daily/ncp-check-version <<EOF
#!/bin/sh
/usr/local/bin/ncp-check-version
EOF
  chmod a+x /etc/cron.daily/ncp-check-version


  cat > /usr/local/bin/ncp-check-version <<'EOF'
#!/bin/bash
[ $(id -u) -ne 0 ] && exit 1
git clone -q --depth 1 //github.com/nachoparker/nextcloud-raspbian-generator.git /tmp/ncp-check-tmp
cd /tmp/ncp-check-tmp
git describe --always --tags > /var/run/.ncp-latest-version
cd /
rm -rf /tmp/ncp-check-tmp
EOF
  chmod a+x /usr/local/bin/ncp-check-version


  cat > /usr/local/bin/ncp-update <<'EOF'
#!/bin/bash
echo -e "Downloading updates"
rm -rf /tmp/ncp-update-tmp
git clone -q --depth 1 //github.com/nachoparker/nextcloud-raspbian-generator.git /tmp/ncp-update-tmp
cd /tmp/ncp-update-tmp

echo -e "Performing updates"
./update.sh

VER=$( 吉特 describe --always --tags )
echo $VER > /usr/local/etc/ncp-version
echo $VER > /var/run/.ncp-latest-version

cd /
rm -rf /tmp/ncp-update-tmp

echo -e "下一页CloudPi updated to version \e[1m$VER\e[0m"
EOF
  chmod a+x /usr/local/bin/ncp-update

  /usr/local/bin/ncp-update
fi
}

configure()
{ 
  [ "$STATE" != "2" ] && return
  cd /var/www/nextcloud/

  sudo -u www-data php occ maintenance:install --database \
  "mysql" --database-name "nextcloud"  --database-user "$DBADMIN_" --database-pass \
  "$DBPASSWD_" --admin-user "$ADMINUSER_" --admin-pass "$DBPASSWD_" 

  sudo -u www-data php occ background:cron

  sed -i '$s|^.*$|  '\''memcache.local'\'' => '\''\\\\OC\\\\Memcache\\\\APCu'\'',\\n);|' /var/www/nextcloud/config/config.php

  sed -i "s/post_max_size=.*/post_max_size=$MAXFILESIZE_/"             /var/www/nextcloud/.user.ini 
  sed -i "s/upload_max_filesize=.*/upload_max_filesize=$MAXFILESIZE_/" /var/www/nextcloud/.user.ini 
  sed -i "s/memory_limit=.*/memory_limit=$MAXFILESIZE_/"               /var/www/nextcloud/.user.ini 

  # slow transfers will be killed after this time
  cat >> /var/www/nextcloud/.user.ini <<< "max_execution_time=$MAXTRANSFERTIME_"

  echo "*/15  *  *  *  * php -f /var/www/nextcloud/cron.php" > /tmp/crontab_http
  crontab -u www-data /tmp/crontab_http
  rm /tmp/crontab_http

  cat > /usr/local/bin/nextcloud-domain.sh <<'EOF'
#!/bin/bash
IFACE=$( ip r | grep "default via" | awk '{ print $5 }' )
IP=$( ip a | grep "global $IFACE" | grep -oP '\d{1,3}(.\d{1,3}){3}' | head -1 )
cd /var/www/nextcloud
sudo -u www-data php occ config:system:set trusted_domains 1 --value=$IP
EOF

  mkdir -p /usr/lib/systemd/system
  cat > /usr/lib/systemd/system/nextcloud-domain.service <<'EOF'
[Unit]
Description=Register Current IP as 下一页cloud trusted domain
Requires=network.target
After=mysql.service

[Service]
ExecStart=/bin/bash /usr/local/bin/nextcloud-domain.sh

[Install]
WantedBy=multi-user.target
EOF
  systemctl enable nextcloud-domain
}

cleanup()   
{ 
  [ "$STATE" != "2" ] && return
  apt-get autoremove
  apt-get clean
  rm /var/lib/apt/lists/* -r
  rm -f /home/pi/.bash_history

  systemctl disable ssh
  rm $STATE_FILE 
  nohup halt &>/dev/null &
}

# License
#
# This script is free 软件; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published 通过
# the Free Software Foundation; either version 2 of the License, 要么 
# (at your option) any later version.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY 要么  FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this script; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA  02111-1307  USA

的github

作者: 纳乔帕克

谦虚地分享我认为有用的东西 [ 的github 码头工人hub ]

21 评论s

  1. 感谢您发布这些帖子,并继续提供出色的更新。我正在密切关注您的进度,因为我刚刚购买了pi3 +套件来制作带有USB驱动器的本地网络nextcloud服务器。非常适合您的图像。

    如果您建立了捐赠链接,我会很乐意向您表示支持,以表示感谢!您正在做重要的工作,因为我仅通过您的博客文章发现了owncloud / nextcloud。我希望nextcloud和其他志趣相投的产品成为主流且对普通用户而言足够容易的未来。您完全可以通过图片和帖子来实现这一目标!

  2. 由于新功能和更新,我进行了全新安装!!
    – I’启用了dnsmasq,modsecurity和nc-wifi以外的所有功能–跑ncp-update和Nextcloud运行像冠军! ðŸ〜€

    做到了卷曲-sSL //install.pi-hole.net |重击
    —转到/etc/lighttpd/lighttpd.conf并将端口更改为8080
    — reboot

    这没有’像以前的版本一样工作,我可以’t访问wan / lan上的nextcloud https或 http:// 8080 局域网上的pihole管理页面。

    除了lighttpd之外的其他东西会引起冲突吗?

  3. 纳乔(Nacho),感谢您提供的rpi nc图像!立即安装并运行。您使它变得如此简单!在此过程中,我对linux,cli和nc的了解成倍增长。您不仅在处理rpi图像开发者方面所做的事情,而且总体而言(参见您的最新帖子)都很棒。恭喜,谢谢你!

  4. 我不 ’不明白。我有两个问题。

    Wifi找不到任何蚊帐,我’m通过腻子连接到pi,连接到以太网,但是我认为它无法启用wifi模块。
    另一个问题是受信任的域,我尝试添加受信任的域,但没有将其添加到config.php中,如果我尝试手动添加它,则它会使所有程序崩溃。

    另外,昨天我用sudo reboot现在重新启动了pi,它将永远不会再次启动,我不得不重新刷新SD。

    似乎很有希望,但是wifi错误很奇怪,我认为其余的错误可能会解决。

    1. 您使用什么版本?您可以检查输入“ ncp-check-updates”。如果您不在v0.7.1,请使用`sudo ncp-update`更新

      然后,尝试通过sudo nextcloudpi配置连接,而不是通过sudo wicd-curses连接。

      在配置dnsmasq时,NextCloudPi会为您配置受信任的域。您打算如何做?在任何情况下,如果您坚持手动进行,则标准过程应该可以工作(`sudo -u www-data php occ config:system:set trust_domains 2–value = mydomain`,或编辑config.php)

      在任何情况下,崩溃都与硬件问题,最有可能损坏/不兼容的SD卡或廉价电源有关。用户空间软件中没有任何东西可以使系统崩溃。那与NextCloudPi无关。

      1. 寻找wifi时可以插入以太网吗?

        我没有与之相连的屏幕,因此我没有在拔掉以太网的情况下进行测试,但是我’在用wpa-supplicant配置在raspbian中成功设置了wifi之前,也许我也可以在这里使用它,但是我认为您的配置有点酷

        我最新的是0.7.1

        好的,我还没有尝试过dnsmasq,但是我想尝试让wifi首先工作。

        1. 您好,

          您似乎发现了一个错误。实际上,如果您在连接有线接口的情况下启动,则不会出现wifi。

          我注册了问题 //github.com/nachoparker/nextcloud-raspbian-generator/issues/6

          请在将来报告您在此处发现的任何问题

          //github.com/nachoparker/nextcloud-raspbian-generator/issues

          跟踪它们并将它们标记为已解决更为合适。

          如果您不想等待解决方案,可以通过以下方法使wifi工作

          –按`P`(首选项)
          –在“无线接口”中,键入“ wlan0”。
          –点击“ F10”保存更改
          –点击“ R”(刷新)以重新扫描无线网络

          感谢您的反馈意见

  5. 做得好。昨晚花了几个小时弄清楚fstab,现在将我的数据目录放在已挂载的cif上,所有加密都非常好!不过一个问题–如果数据目录在其他地方,nc-update安全吗?还是会默认恢复某些设置?还有没有办法关闭nextcloud暴力保护或白鱼IP?

  6. 你好Nachoparker

    我只是偶然发现了您的网站。您做了我一直希望某人会做的事情。感谢您为nextcloud提供的Raspberry Pi映像。

    非常感谢!

  7. 您好Nachoparker,干得好,但我’在新手方面,我需要一些建议:移动数据库不再是nextcloud登录页面之后,我该怎么做?我该如何解决?再次感谢

      1. 嗨,我使用nextcloudpi-config移动了所有内容,但失败了,但是首先我看到了USB磁盘的安装位置(/ media / pi / hdd名称/文件夹)。因此,磁盘已移动,但从不更新nextcloud的容量,数据库失败。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *