From 7e1b7fc83a13078d4aa8d871c1e930a97ea201b9 Mon Sep 17 00:00:00 2001 From: oufmilo <44617467+oufmilo@users.noreply.github.com> Date: Wed, 7 Feb 2024 19:31:56 +0100 Subject: [PATCH 01/10] Sharkey v2023.12.0 --- .gitattributes | 2 - .gitignore | 2 - LICENSE | 663 ++++++++++++++++++++++++++++- README.md | 43 +- README_fr.md | 38 +- conf/extra_php-fpm.conf | 4 - conf/nginx.conf | 37 +- conf/systemd.service | 11 +- config_panel.toml.example | 302 ------------- doc/.gitkeep | 0 doc/ADMIN.md | 17 +- doc/ADMIN_fr.md | 17 +- doc/DESCRIPTION.md | 2 +- doc/DESCRIPTION_fr.md | 2 +- doc/POST_INSTALL.md | 7 - doc/POST_UPGRADE.md | 1 - doc/PRE_INSTALL.md | 1 - doc/PRE_INSTALL_fr.md | 1 - doc/PRE_UPGRADE.md | 1 - doc/screenshots/.gitkeep | 0 doc/screenshots/example.jpg | Bin 35451 -> 0 bytes manifest.toml | 132 ++---- scripts/_common.sh | 42 +- scripts/backup | 49 +-- scripts/change_url | 54 --- scripts/config | 101 ----- scripts/install | 206 +++------ scripts/remove | 73 ++-- scripts/restore | 86 ++-- scripts/upgrade | 134 +++--- sources/extra_files/app/.gitignore | 2 - sources/patches/.gitignore | 2 - tests.toml | 73 +--- 33 files changed, 1013 insertions(+), 1092 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .gitignore delete mode 100644 conf/extra_php-fpm.conf delete mode 100644 config_panel.toml.example delete mode 100644 doc/.gitkeep delete mode 100644 doc/POST_INSTALL.md delete mode 100644 doc/POST_UPGRADE.md delete mode 100644 doc/PRE_INSTALL.md delete mode 100644 doc/PRE_INSTALL_fr.md delete mode 100644 doc/PRE_UPGRADE.md delete mode 100644 doc/screenshots/.gitkeep delete mode 100644 doc/screenshots/example.jpg delete mode 100644 scripts/change_url delete mode 100644 scripts/config delete mode 100644 sources/extra_files/app/.gitignore delete mode 100644 sources/patches/.gitignore diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 6f9a98b..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -tests.toml.example linguist-language=toml -config_panel.toml.example linguist-language=toml diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 783a4ae..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*~ -*.sw[op] diff --git a/LICENSE b/LICENSE index 2026412..2c7293d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,661 @@ -File containing the license of your package. + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 -More information here: -https://choosealicense.com/ + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. \ No newline at end of file diff --git a/README.md b/README.md index dca5694..96f8003 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,47 @@ -# Packaging an app, starting from this example - -* Copy this app before working on it, using the ['Use this template'](https://github.com/YunoHost/example_ynh/generate) button on the Github repo. -* Edit the `manifest.json` with app specific info. -* Edit the `install`, `upgrade`, `remove`, `backup`, and `restore` scripts, and any relevant conf files in `conf/`. - * Using the [script helpers documentation.](https://yunohost.org/packaging_apps_helpers) -* Add a `LICENSE` file for the package. -* Edit `doc/DISCLAIMER*.md` -* The `README.md` files are to be automatically generated by https://github.com/YunoHost/apps/tree/master/tools/README-generator - ---- -# Example app for YunoHost +# Misskey for YunoHost -[![Integration level](https://dash.yunohost.org/integration/example.svg)](https://dash.yunohost.org/appci/app/example) ![Working status](https://ci-apps.yunohost.org/ci/badges/example.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/example.maintain.svg) +[![Integration level](https://dash.yunohost.org/integration/misskey.svg)](https://dash.yunohost.org/appci/app/misskey) ![Working status](https://ci-apps.yunohost.org/ci/badges/misskey.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/misskey.maintain.svg) -[![Install Example app with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=example) +[![Install Misskey with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=misskey) *[Lire ce readme en français.](./README_fr.md)* -> *This package allows you to install Example app quickly and simply on a YunoHost server. +> *This package allows you to install Misskey quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -This is a dummy description of this app features +Misskey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. -**Shipped version:** 1.0~ynh1 - -**Demo:** https://demo.example.com +**Shipped version:** 12.119.2~ynh1 ## Screenshots -![Screenshot of Example app](./doc/screenshots/example.jpg) +![Screenshot of Misskey](./doc/screenshots/screenshot-desktop.png) ## Documentation and resources -* Official app website: -* Official user documentation: -* Official admin documentation: -* Upstream app code repository: -* YunoHost Store: -* Report a bug: +* Official app website: +* Upstream app code repository: +* YunoHost documentation for this app: +* Report a bug: ## Developer info -Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/example_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/misskey_ynh/tree/testing). To try the testing branch, please proceed like that. ``` bash -sudo yunohost app install https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug or -sudo yunohost app upgrade example -u https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +sudo yunohost app upgrade misskey -u https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug ``` **More info regarding app packaging:** diff --git a/README_fr.md b/README_fr.md index 524da2f..bba54f5 100644 --- a/README_fr.md +++ b/README_fr.md @@ -3,49 +3,43 @@ N.B.: This README was automatically generated by https://github.com/YunoHost/app It shall NOT be edited by hand. --> -# Example app pour YunoHost +# Misskey pour YunoHost -[![Niveau d’intégration](https://dash.yunohost.org/integration/example.svg)](https://dash.yunohost.org/appci/app/example) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/example.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/example.maintain.svg) +[![Niveau d’intégration](https://dash.yunohost.org/integration/misskey.svg)](https://dash.yunohost.org/appci/app/misskey) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/misskey.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/misskey.maintain.svg) -[![Installer Example app avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=example) +[![Installer Misskey avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=misskey) *[Read this readme in english.](./README.md)* -> *Ce package vous permet d’installer Example app rapidement et simplement sur un serveur YunoHost. +> *Ce package vous permet d’installer Misskey rapidement et simplement sur un serveur YunoHost. Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l’installer et en profiter.* ## Vue d’ensemble -Ceci est une fausse description des fonctionalités de l'app +Misskey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. + +**Version incluse :** 12.119.2~ynh1 -**Version incluse :** 1.0~ynh1 - -**Démo :** https://demo.example.com - -## Captures d’écran - -![Capture d’écran de Example app](./doc/screenshots/example.jpg) +![Capture d’écran de Misskey](./doc/screenshots/screenshot-desktop.png) ## Documentations et ressources -* Site officiel de l’app : -* Documentation officielle utilisateur : -* Documentation officielle de l’admin : -* Dépôt de code officiel de l’app : -* YunoHost Store: -* Signaler un bug : +* Site officiel de l’app : +* Dépôt de code officiel de l’app : +* Documentation YunoHost pour cette app : +* Signaler un bug : ## Informations pour les développeurs -Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/example_ynh/tree/testing). +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/misskey_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. ``` bash -sudo yunohost app install https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug ou -sudo yunohost app upgrade example -u https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +sudo yunohost app upgrade misskey -u https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug ``` -**Plus d’infos sur le packaging d’applications :** \ No newline at end of file +**Plus d’infos sur le packaging d’applications :** diff --git a/conf/extra_php-fpm.conf b/conf/extra_php-fpm.conf deleted file mode 100644 index 700c37c..0000000 --- a/conf/extra_php-fpm.conf +++ /dev/null @@ -1,4 +0,0 @@ -; Additional php.ini defines, specific to this pool of workers. - -php_admin_value[upload_max_filesize] = 50M -php_admin_value[post_max_size] = 50M diff --git a/conf/nginx.conf b/conf/nginx.conf index 1e6eee0..565b921 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,28 +1,25 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - # Path to source - alias __INSTALL_DIR__/; + proxy_pass http://127.0.0.1:__PORT__; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_http_version 1.1; + proxy_redirect off; -### Example PHP configuration (remove it if not used) - index index.php; - - # Common parameter to increase upload size limit in conjunction with dedicated php-fpm file - # client_max_body_size 50M; - - try_files $uri $uri/ index.php; - location ~ [^/]\.php(/|$) { - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; - - fastcgi_index index.php; - include fastcgi_params; - fastcgi_param REMOTE_USER $remote_user; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param SCRIPT_FILENAME $request_filename; - } -### End of PHP configuration part + # For WebSocket + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + # Cache settings + #proxy_cache cache1; + proxy_cache_lock on; + proxy_cache_use_stale updating; + more_set_headers "X-Cache: $upstream_cache_status"; + # Change to upload limit + client_max_body_size 80m; # Include SSOWAT user panel. include conf.d/yunohost_panel.conf.inc; } diff --git a/conf/systemd.service b/conf/systemd.service index 97d2900..b55e078 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -1,5 +1,5 @@ [Unit] -Description=Small description of the service +Description=Sharkey: microblogging platform After=network.target [Service] @@ -7,9 +7,12 @@ Type=simple User=__APP__ Group=__APP__ WorkingDirectory=__INSTALL_DIR__/ -ExecStart=__INSTALL_DIR__/script -StandardOutput=append:/var/log/__APP__/__APP__.log -StandardError=inherit +Environment="__YNH_NODE_LOAD_PATH__" +Environment="NODE_OPTIONS=--max-old-space-size=8192" +Environment="NODE_ENV=production" +ExecStart=__YNH_NPM__ start +TimeoutSec=60 +Restart=always ### Depending on specificities of your service/app, you may need to tweak these ### .. but this should be a good baseline diff --git a/config_panel.toml.example b/config_panel.toml.example deleted file mode 100644 index ed147af..0000000 --- a/config_panel.toml.example +++ /dev/null @@ -1,302 +0,0 @@ - -## Config panel are available from webadmin > Apps > YOUR_APP > Config Panel Button -## Those panels let user configure some params on their apps using a friendly interface, -## and remove the need to manually edit files from the command line. - -## From a packager perspective, this .toml is coupled to the scripts/config script, -## which may be used to define custom getters/setters. However, most use cases -## should be covered automagically by the core, thus it may not be necessary -## to define a scripts/config at all! - -## ----------------------------------------------------------------------------- -## IMPORTANT: In accordance with YunoHost's spirit, please keep things simple and -## do not overwhelm the admin with tons of misunderstandable or advanced settings. -## ----------------------------------------------------------------------------- - -## The top level describe the entire config panels screen. - -## The version is a required property. -## Here a small reminder to associate config panel version with YunoHost version -## | Config | YNH | Config panel small change log | -## | ------ | --- | ------------------------------------------------------- | -## | 0.1 | 3.x | 0.1 config script not compatible with YNH >= 4.3 | -## | 1.0 | 4.3.x | The new config panel system with 'bind' property | -version = "1.0" - -## (optional) i18n property let you internationalize questions, however this feature -## is only available in core configuration panel (like yunohost domain config). -## So in app config panel this key is ignored for now, but you can internationalize -## by using a lang dictionary (see property name bellow) -# i18n = "prefix_translation_key" - -################################################################################ -#### ABOUT PANELS -################################################################################ - -## The next level describes web admin panels -## You have to choose an ID for each panel, in this example the ID is "main" -## Keep in mind this ID will be used in CLI to refer to your question, so choose -## something short and meaningfull. -## In the webadmin, each panel corresponds to a distinct tab / form -[main] - -## Define the label for your panel -## Internationalization works similarly to the 'description' and 'ask' questions in the manifest -# name.en = "Main configuration" -# name.fr = "Configuration principale" - -## (optional) If you need to trigger a service reload-or-restart after the user -## change a question in this panel, you can add your service in the list. -services = ["__APP__"] -# or services = ["nginx", "__APP__"] to also reload-or-restart nginx - -## (optional) This help properties is a short help displayed on the same line -## than the panel title but not displayed in the tab. -# help = "" - - ############################################################################ - #### ABOUT SECTIONS - ############################################################################ - - ## A panel is composed of one or several sections. - ## - ## Sections are meant to group questions together when they correspond to - ## a same subtopic. This impacts the rendering in terms of CLI prompts - ## and HTML forms - ## - ## You should choose an ID for your section, and prefix it with the panel ID - ## (Be sure to not make a typo in the panel ID, which would implicitly create - ## an other entire panel) - ## - ## We use the context of pepettes_ynh as an example, - ## which is a simple donation form app written in python, - ## and for which the admin will want to edit the configuration - [main.customization] - - ## (optional) Defining a proper title for sections is not mandatory - ## and depends on the exact rendering you're aiming for the CLI / webadmin - name = "" - - ## (optional) This help properties is a short help displayed on the same line - ## than the section title, meant to provide additional details - # help = "" - - ## (optional) As for panel, you can specify to trigger a service - ## reload-or-restart after the user change a question in this section. - ## This property is added to the panel property, it doesn't deactivate it. - ## So no need to replicate, the service list from panel services property. - # services = [] - - ## (optional) By default all questions are optionals, but you can specify a - ## default behaviour for question in the section - optional = false - - ## (optional) It's also possible with the 'visible' property to only - ## display the section depending on the user's answers to previous questions. - ## - ## Be careful that the 'visible' property should only refer to **previous** questions - ## Hence, it should not make sense to have a "visible" property on the very first section. - ## - ## Also, keep in mind that this feature only works in the webadmin and not in CLI - ## (therefore a user could be prompted in CLI for a question that may not be relevant) - # visible = true - - ######################################################################## - #### ABOUT QUESTIONS - ######################################################################## - - ## A section is compound of one or several questions. - - ## --------------------------------------------------------------------- - ## IMPORTANT: as for panel and section you have to choose an ID, but this - ## one should be unique in all this document, even if the question is in - ## an other panel. - ## --------------------------------------------------------------------- - - ## You can use same questions types and properties than in manifest.yml - ## install part. However, in YNH 4.3, a lot of change has been made to - ## extend availables questions types list. - ## See: TODO DOC LINK - - [main.customization.project_name] - - ## (required) The ask property is equivalent to the ask property in - ## the manifest. However, in config panels, questions are displayed on the - ## left side and therefore have less space to be rendered. Therefore, - ## it is better to use a short question, and use the "help" property to - ## provide additional details if necessary. - ask.en = "Name of the project" - - ## (required) The type property indicates how the question should be - ## displayed, validated and managed. Some types have specific properties. - ## - ## Types available: string, boolean, number, range, text, password, path - ## email, url, date, time, color, select, domain, user, tags, file. - ## - ## For a complete list with specific properties, see: TODO DOC LINK - type = "string" - - ######################################################################## - #### ABOUT THE BIND PROPERTY - ######################################################################## - - ## (recommended) 'bind' property is a powerful feature that let you - ## configure how and where the data will be read, validated and written. - - ## By default, 'bind property is in "settings" mode, it means it will - ## **only** read and write the value in application settings file. - ## bind = "settings" - - ## However, settings usually correspond to key/values in actual app configurations - ## Hence, a more useful mode is to have bind = ":FILENAME". In that case, YunoHost - ## will automagically find a line with "KEY=VALUE" in FILENAME - ## (with the adequate separator between KEY and VALUE) - ## - ## YunoHost will then use this value for the read/get operation. - ## During write/set operations, YunoHost will overwrite the value - ## in **both** FILENAME and in the app's settings.yml - - ## Configuration file format supported: yaml, toml, json, ini, env, php, - ## python. The feature probably works with others formats, but should be tested carefully. - - ## Note that this feature only works with relatively simple cases - ## such as `KEY: VALUE`, but won't properly work with - ## complex data structures like multilin array/lists or dictionnaries. - ## It also doesn't work with XML format, custom config function call, php define(), ... - - ## More info on TODO - # bind = ":/var/www/__APP__/settings.py" - - - ## By default, bind = ":FILENAME" will use the question ID as KEY - ## ... but the question ID may sometime not be the exact KEY name in the configuration file. - ## - ## In particular, in pepettes, the python variable is 'name' and not 'project_name' - ## (c.f. https://github.com/YunoHost-Apps/pepettes_ynh/blob/5cc2d3ffd6529cc7356ff93af92dbb6785c3ab9a/conf/settings.py##L11 ) - ## - ## In that case, the key name can be specified before the column ':' - - bind = "name:/var/www/__APP__/settings.py" - - ## --------------------------------------------------------------------- - ## IMPORTANT: other 'bind' mode exists: - ## - ## bind = "FILENAME" (with no column character before FILENAME) - ## may be used to bind to the **entire file content** (instead of a single KEY/VALUE) - ## This could be used to expose an entire configuration file, or binary files such as images - ## For example: - ## bind = "/var/www/__APP__/img/logo.png" - ## - ## bind = "null" can be used to disable reading / writing in settings. - ## This creates sort of a "virtual" or "ephemeral" question which is not related to any actual setting - ## In this mode, you are expected to define custom getter/setters/validators in scripts/config: - ## - ## getter: get__QUESTIONID() - ## setter: set__QUESTIONID() - ## validator: validate__QUESTIONID() - ## - ## You can also specify a common getter / setter / validator, with the - ## function 'bind' mode, for example here it will try to run - ## get__array_settings() first. - # bind = "array_settings()" - ## --------------------------------------------------------------------- - - ## --------------------------------------------------------------------- - ## IMPORTANT: with the exception of bind=null questions, - ## question IDs should almost **always** correspond to an app setting - ## initialized / reused during install/upgrade. - ## Not doing so may result in inconsistencies between the config panel mechanism - ## and the use of ynh_add_config - ## --------------------------------------------------------------------- - - ######################################################################## - #### OTHER GENERIC PROPERTY FOR QUESTIONS - ######################################################################## - - ## (optional) An help text for the question - help = "Fill the name of the project which will received donation" - - ## (optional) An example display as placeholder in web form - # example = "YunoHost" - - ## (optional) set to true in order to redact the value in operation logs - # redact = false - - ## (optional) for boolean questions you can specify replacement values - ## bound to true and false, in case property is bound to config file - # useful if bound property in config file expects something else than integer 1 - yes = "Enable" - # useful if bound property in config file expects something else than integer 0 - no = "Disable" - - ## (optional) A validation pattern - ## --------------------------------------------------------------------- - ## IMPORTANT: your pattern should be between simple quote, not double. - ## --------------------------------------------------------------------- - pattern.regexp = '^\w{3,30}$' - pattern.error = "The name should be at least 3 chars and less than 30 chars. Alphanumeric chars are accepted" - - ## Note: visible and optional properties are also available for questions - - - [main.customization.contact_url] - ask = "Contact url" - type = "url" - example = "mailto: contact@example.org" - help = "mailto: accepted" - pattern.regexp = '^mailto:[^@]+@[^@]+|https://$' - pattern.error = "Should be https or mailto:" - bind = ":/var/www/__APP__/settings.py" - - [main.customization.logo] - ask = "Logo" - type = "file" - accept = ".png" - help = "Fill with an already resized logo" - bind = "__INSTALL_DIR__/img/logo.png" - - [main.customization.favicon] - ask = "Favicon" - type = "file" - accept = ".png" - help = "Fill with an already sized favicon" - bind = "__INSTALL_DIR__/img/favicon.png" - - - [main.stripe] - name = "Stripe general info" - optional = false - - # The next alert is overwrited with a getter from the config script - [main.stripe.amount] - ask = "Donation in the month : XX € - type = "alert" - style = "success" - - [main.stripe.publishable_key] - ask = "Publishable key" - type = "string" - redact = true - help = "Indicate here the stripe publishable key" - bind = ":/var/www/__APP__/settings.py" - - [main.stripe.secret_key] - ask = "Secret key" - type = "string" - redact = true - help = "Indicate here the stripe secret key" - bind = ":/var/www/__APP__/settings.py" - - [main.stripe.prices] - ask = "Prices ID" - type = "tags" - help = """\ - Indicates here the prices ID of donation products you created in stripe interfaces. \ - Go on [Stripe products](https://dashboard.stripe.com/products) to create those donation products. \ - Fill it tag with 'FREQUENCY/CURRENCY/PRICE_ID' \ - FREQUENCY: 'one_time' or 'recuring' \ - CURRENCY: 'EUR' or 'USD' \ - PRICE_ID: ID from stripe interfaces starting with 'price_' \ - """ - pattern.regexp = '^(one_time|recuring)/(EUR|USD)/price_.*$' - pattern.error = "Please respect the format describe in help text for each price ID" diff --git a/doc/.gitkeep b/doc/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/doc/ADMIN.md b/doc/ADMIN.md index c9b5225..faa1266 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -1,3 +1,16 @@ -This is a dummy admin doc for this app +### Important points to read before installing -The app install dir is `__INSTALL_DIR__` +- The first account created will be an admin user and will have all the admin rights. + +Using screen in case of disconnects + +``` +sudo apt-get install screen +screen +sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh.git +``` +Recover after disconnect: +``` +screen -d +screen -r +``` diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index a138028..0a7af8b 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -1,3 +1,16 @@ -Ceci est une fausse doc d'admin pour cette app +### Points importants à lire avant l'installation -Le dossier d'install de l'app est `__INSTALL_DIR__` +- Le premier compte créé sera un utilisateur administrateur et disposera de tous les droits d'administrateur. + +Utiliser *screen* en cas de déconnexion + +``` +sudo apt-get install screen +screen +sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh.git +``` +Récupérer après déconnexion : +``` +screen -d +screen -r +``` diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index 3f2e57a..f1d9c76 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1 +1 @@ -This is a dummy description of this app features +Misskey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md index 13f4b64..e17cec6 100644 --- a/doc/DESCRIPTION_fr.md +++ b/doc/DESCRIPTION_fr.md @@ -1 +1 @@ -Ceci est une fausse description des fonctionalités de l'app +Misskey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. \ No newline at end of file diff --git a/doc/POST_INSTALL.md b/doc/POST_INSTALL.md deleted file mode 100644 index f42358d..0000000 --- a/doc/POST_INSTALL.md +++ /dev/null @@ -1,7 +0,0 @@ -This is a dummy disclaimer to display after the install - -The app url is - -The app install dir is `__INSTALL_DIR__` - -The app id is `__ID__` diff --git a/doc/POST_UPGRADE.md b/doc/POST_UPGRADE.md deleted file mode 100644 index a58e2ae..0000000 --- a/doc/POST_UPGRADE.md +++ /dev/null @@ -1 +0,0 @@ -This is a dummy disclaimer to display after upgrades diff --git a/doc/PRE_INSTALL.md b/doc/PRE_INSTALL.md deleted file mode 100644 index eb3ab3a..0000000 --- a/doc/PRE_INSTALL.md +++ /dev/null @@ -1 +0,0 @@ -This is a dummy disclaimer to display prior to the install diff --git a/doc/PRE_INSTALL_fr.md b/doc/PRE_INSTALL_fr.md deleted file mode 100644 index 4a02cd5..0000000 --- a/doc/PRE_INSTALL_fr.md +++ /dev/null @@ -1 +0,0 @@ -Ceci est un faux disclaimer à présenter avant l'installation diff --git a/doc/PRE_UPGRADE.md b/doc/PRE_UPGRADE.md deleted file mode 100644 index 780fc15..0000000 --- a/doc/PRE_UPGRADE.md +++ /dev/null @@ -1 +0,0 @@ -This is a dummy disclaimer to display prior to any upgrade diff --git a/doc/screenshots/.gitkeep b/doc/screenshots/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/doc/screenshots/example.jpg b/doc/screenshots/example.jpg deleted file mode 100644 index a1efa1a36d593384df59dc13db03fa83b0436d69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35451 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 UE-)&$xd9C0IsX9d#{5|Pe`qLcKmY&$ diff --git a/manifest.toml b/manifest.toml index dd9ddc2..4fc010b 100644 --- a/manifest.toml +++ b/manifest.toml @@ -1,135 +1,53 @@ -#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/manifest.v2.schema.json - packaging_format = 2 -id = "example" -name = "Example app" -description.en = "Explain in *a few (10~15) words* the purpose of the app or what it actually does (it is meant to give a rough idea to users browsing a catalog of 100+ apps)" -description.fr = "Expliquez en *quelques* (10~15) mots l'utilité de l'app ou ce qu'elle fait (l'objectif est de donner une idée grossière pour des utilisateurs qui naviguent dans un catalogue de 100+ apps)" +id = "sharkey" +name = "Sharkey" +description.en = "Microblogging platform" +description.fr = "Platforme de Microblogging" -version = "1.0~ynh1" +version = "2023.12.0~ynh1" -maintainers = ["johndoe"] +maintainers = ["oufmilo"] [upstream] -# NB: Only the "license" key is mandatory. Remove entries for which there's no relevant data -license = "free" -website = "https://example.com" -demo = "https://demo.example.com" -admindoc = "https://yunohost.org/packaging_apps" -userdoc = "https://yunohost.org/apps" -code = "https://some.forge.com/example/example" -# FIXME: optional but recommended if relevant, this is meant to contain the Common Platform Enumeration, which is -# sort of a standard id for applications defined by the NIST. In particular, YunoHost may use this is in the future -# to easily track CVE (=security reports) related to apps. The CPE may be obtained by searching here: -# https://nvd.nist.gov/products/cpe/search. -# For example, for Nextcloud, the CPE is 'cpe:2.3:a:nextcloud:nextcloud' (no need to include the version number) -cpe = "???" - -# FIXME: optional but recommended (or remove if irrelevant / not applicable). -# This is meant to be an URL where people can financially support this app, especially when its development is based -# on volunteers and/or financed by its community. YunoHost may later advertise it in the webadmin. -fund = "???" +license = "AGPL-3.0" +website = "https://git.joinsharkey.org/Sharkey" +code = "https://activitypub.software/TransFem-org/Sharkey" [integration] yunohost = ">= 11.2" -# FIXME: can be replaced by a list of supported archs using the dpkg --print-architecture nomenclature (amd64/i386/armhf/arm64), for example: ["amd64", "i386"] architectures = "all" -multi_instance = true - -# FIXME: replace with true, false, or "not_relevant". -# Not to confuse with the "sso" key: the "ldap" key corresponds to wether or not a user *can* login on the app using -# its YunoHost credentials. -ldap = "?" - -# FIXME: replace with true, false, or "not_relevant". -# Not to confuse with the "ldap" key: the "sso" key corresponds to wether or not a user is *automatically logged-in* -# on the app when logged-in on the YunoHost portal. -sso = "?" - -# FIXME: replace with an **estimate** minimum disk and RAM requirements. e.g. 20M, 400M, 1G... +multi_instance = false +ldap = "not_relevant" +sso = "not_relevant" disk = "50M" ram.build = "50M" ram.runtime = "50M" [install] [install.domain] - # this is a generic question - ask strings are automatically handled by YunoHost's core type = "domain" - - [install.path] - # this is a generic question - ask strings are automatically handled by YunoHost's core - type = "path" - default = "/example" - + [install.init_main_permission] - # this is a generic question - ask strings are automatically handled by YunoHost's core - # This won't be saved as setting and will instead be used to initialize the SSOwat permission + help.en = "If enabled, Misskey will be accessible by people who do not have an account. This can be changed later via the webadmin." + help.fr = "Si cette case est cochée, Misskey sera accessible aux personnes n’ayant pas de compte. Vous pourrez changer ceci plus tard via la webadmin." type = "group" default = "visitors" - [install.language] - ask.en = "Choose the application language" - ask.fr = "Choisissez la langue de l'application" - type = "select" - choices = ["fr", "en"] - default = "fr" - - [install.admin] - # this is a generic question - ask strings are automatically handled by YunoHost's core - type = "user" - - [install.password] - # this is a generic question - ask strings are automatically handled by YunoHost's core - # Note that user-provided passwords questions are not automatically saved as setting - help.en = "Use the help field to add an information for the admin about this question." - help.fr = "Utilisez le champ aide pour ajouter une information à l'intention de l'administrateur à propos de cette question." - type = "password" - [resources] - # See the packaging documentation for the full set - # of explanation regarding the behavior and properties for each of those - - [resources.sources] - - [resources.sources.main] - # This will pre-fetch the asset which can then be deployed during the install/upgrade scripts with : - # ynh_setup_source --dest_dir="$install_dir" - # You can also define other assets than "main" and add --source_id="foobar" in the previous command - url = "https://github.com/foo/bar/archive/refs/tags/v1.2.3.tar.gz" - sha256 = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - - # These infos are used by https://github.com/YunoHost/apps/blob/master/tools/autoupdate_app_sources/autoupdate_app_sources.py - # to auto-update the previous asset urls and sha256sum + manifest version - # assuming the upstream's code repo is on github and relies on tags or releases - # See the 'sources' resource documentation for more details - - # autoupdate.strategy = "latest_github_tag" - - [resources.system_user] - # This will provision/deprovision a unix system user - - [resources.install_dir] - # This will create/remove the install dir as /var/www/$app - # and store the corresponding setting $install_dir - - [resources.data_dir] - # This will create/remove the data dir as /home/yunohost.app/$app - # and store the corresponding setting $data_dir - - [resources.permissions] - # This will configure SSOwat permission for $domain/$path/ - # The initial allowed group of user is configured via the init_main_permission question (public=visitors, private=all_users) - main.url = "/" [resources.ports] - # This will pick a random port for reverse-proxying and store it as the $port setting + + [resources.system_user] + + [resources.install_dir] + + [resources.permissions] + main.url = "/" [resources.apt] - # This will automatically install/uninstall the following apt packages - # and implicitly define the $phpversion setting as 8.0 (if phpX.Y-foobar dependencies are listed) - packages = "mariadb-server, deb1, deb2, php8.0-foo, php8.0-bar" + packages ="ffmpeg postgresql git build-essential" + [resources.database] - # This will automatically provision/deprovison a MySQL DB and store the corresponding credentials in settings $db_user, $db_name, $db_pwd - type = "mysql" + type = "postgresql" diff --git a/scripts/_common.sh b/scripts/_common.sh index 944a65e..fbc676c 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,6 +4,8 @@ # COMMON VARIABLES #================================================= +NODEJS_VERSION="20" + #================================================= # PERSONAL HELPERS #================================================= @@ -13,5 +15,43 @@ #================================================= #================================================= -# FUTURE OFFICIAL HELPERS +# REDIS HELPERS #================================================= + +# get the first available redis database +# +# usage: ynh_redis_get_free_db +# | returns: the database number to use +ynh_redis_get_free_db() { + local result max db + result="$(redis-cli INFO keyspace)" + + # get the num + max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") + + db=0 + # default Debian setting is 15 databases + for i in $(seq 0 "$max") + do + if ! echo "$result" | grep -q "db$i" + then + db=$i + break 1 + fi + db=-1 + done + + test "$db" -eq -1 && ynh_die --message="No available Redis databases..." + + echo "$db" +} + +# Create a master password and set up global settings +# Please always call this script in install and restore scripts +# +# usage: ynh_redis_remove_db database +# | arg: database - the database to erase +ynh_redis_remove_db() { + local db=$1 + redis-cli -n "$db" flushall +} diff --git a/scripts/backup b/scripts/backup index a675fe7..0f520f0 100755 --- a/scripts/backup +++ b/scripts/backup @@ -15,11 +15,6 @@ source /usr/share/yunohost/helpers #================================================= ynh_print_info --message="Declaring files to be backed up..." -### N.B. : the following 'ynh_backup' calls are only a *declaration* of what needs -### to be backuped and not an actual copy of any file. The actual backup that -### creates and fills the archive with the files happens in the core after this -### script is called. Hence ynh_backups calls take basically 0 seconds to run. - #================================================= # BACKUP THE APP MAIN DIR #================================================= @@ -27,53 +22,31 @@ ynh_print_info --message="Declaring files to be backed up..." ynh_backup --src_path="$install_dir" #================================================= -# BACKUP THE DATA DIR +# BACKUP THE NGINX CONFIGURATION #================================================= -### Only relevant if there is a "data_dir" resource for this app -ynh_backup --src_path="$data_dir" --is_big - -#================================================= -# SYSTEM CONFIGURATION -#================================================= - -# Backup the PHP-FPM configuration -ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -# Backup the nginx configuration ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -# Backup the systemd service unit -ynh_backup --src_path="/etc/systemd/system/$app.service" +#================================================= +# SPECIFIC BACKUP +#================================================= +# BACKUP LOGROTATE +#================================================= -# Backup the logrotate configuration ynh_backup --src_path="/etc/logrotate.d/$app" -# Backup the Fail2Ban config -ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" -ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" - #================================================= -# BACKUP VARIOUS FILES +# BACKUP SYSTEMD #================================================= -ynh_backup --src_path="/etc/cron.d/$app" - -ynh_backup --src_path="/etc/$app/" - -### For apps with huge logs, you might want to pass --is_big, -### and in restore script, mkdir and pass --not_mandatory to ynh_restore_file. -ynh_backup --src_path="/var/log/$app/" +ynh_backup --src_path="/etc/systemd/system/$app.service" #================================================= -# BACKUP THE MYSQL DATABASE +# BACKUP THE POSTGRESQL DATABASE #================================================= -ynh_print_info --message="Backing up the MySQL database..." +ynh_print_info --message="Backing up the PostgreSQL database..." -### (However, things like MySQL dumps *do* take some time to run, though the -### copy of the generated dump to the archive still happens later) - -ynh_mysql_dump_db --database="$db_name" > db.sql +ynh_psql_dump_db --database="$db_name" > db.sql #================================================= # END OF SCRIPT diff --git a/scripts/change_url b/scripts/change_url deleted file mode 100644 index b2c6c33..0000000 --- a/scripts/change_url +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -## this script is only run if actual change to domain/path is detected, if you're here either $domain or $path changed -## new location is available via $domain and $path (or $new_domain and $new_path variables if you want to be explicit) -## old values are available via, you guessed it, $old_domain and $old_path - -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - -source _common.sh -source /usr/share/yunohost/helpers - -#================================================= -# STANDARD MODIFICATIONS -#================================================= -# STOP SYSTEMD SERVICE -#================================================= -ynh_script_progression --message="Stopping a systemd service..." --weight=1 - -ynh_systemd_action --service_name="$app" --action="stop" --log_path="/var/log/$app/$app.log" - -#================================================= -# MODIFY URL IN NGINX CONF -#================================================= -ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 - -# this will most likely adjust NGINX config correctly -ynh_change_url_nginx_config - -#================================================= -# SPECIFIC MODIFICATIONS -#================================================= -# ... -#================================================= - -## do any changes to files that reference specific installation domain/path, i.e. regenerate configs etc - -#================================================= -# GENERIC FINALISATION -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 - -ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" - -#================================================= -# END OF SCRIPT -#================================================= - -ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/config b/scripts/config deleted file mode 100644 index 29f78f8..0000000 --- a/scripts/config +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash -# In simple cases, you don't need a config script. - -# With a simple config_panel.toml, you can write in the app settings, in the -# upstream config file or replace complete files (logo ...) and restart services. - -# The config scripts allows you to go further, to handle specific cases -# (validation of several interdependent fields, specific getter/setter for a value, -# display dynamic informations or choices, pre-loading of config type .cube... ). - -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - -source /usr/share/yunohost/helpers - -ynh_abort_if_errors - -#================================================= -# RETRIEVE ARGUMENTS -#================================================= - -install_dir=$(ynh_app_setting_get --app="$app" --key=install_dir) - -#================================================= -# SPECIFIC GETTERS FOR TOML SHORT KEY -#================================================= - -get__amount() { - # Here we can imagine to have an API call to stripe to know the amount of donation during a month - local amount=200 - - # It's possible to change some properties of the question by overriding it: - if [ "$amount" -gt 100 ]; then - cat << EOF -style: success -value: $amount -ask: - en: A lot of donation this month: **$amount €** -EOF - else - cat << EOF -style: danger -value: $amount -ask: - en: Not so much donation this month: $amount € -EOF - fi -} - -get__prices() { - local prices - prices="$(grep "DONATION\['" "$install_dir/settings.py" | sed -r "s@^DONATION\['([^']*)'\]\['([^']*)'\] = '([^']*)'@\1/\2/\3@g" | sed -z 's/\n/,/g;s/,$/\n/')" - if [ "$prices" == "," ]; then - # Return YNH_NULL if you prefer to not return a value at all. - echo YNH_NULL - else - echo "$prices" - fi -} - - -#================================================= -# SPECIFIC VALIDATORS FOR TOML SHORT KEYS -#================================================= -validate__publishable_key() { - - # We can imagine here we test if the key is really a publishable key - (is_secret_key "$publishable_key") && - echo 'This key seems to be a secret key' -} - -#================================================= -# SPECIFIC SETTERS FOR TOML SHORT KEYS -#================================================= -set__prices() { - - #--------------------------------------------- - # IMPORTANT: setters are triggered only if a change is detected - #--------------------------------------------- - for price in $(echo "$prices" | sed "s/,/ /"); do - frequency=$(echo "$price" | cut -d/ -f1) - currency=$(echo "$price" | cut -d/ -f2) - price_id=$(echo "$price" | cut -d/ -f3) - sed "d/DONATION\['$frequency'\]\['$currency'\]" "$install_dir/settings.py" - - echo "DONATION['$frequency']['$currency'] = '$price_id'" >> "$install_dir/settings.py" - done - - #--------------------------------------------- - # IMPORTANT: to be able to upgrade properly, you have to save the value in settings too - #--------------------------------------------- - ynh_app_setting_set --app="$app" --key=prices --value="$prices" -} - -#================================================= -# GENERIC FINALIZATION -#================================================= -ynh_app_config_run "$1" diff --git a/scripts/install b/scripts/install index 923f4d6..2ddd556 100755 --- a/scripts/install +++ b/scripts/install @@ -9,195 +9,93 @@ source _common.sh source /usr/share/yunohost/helpers -### Install parameters are automatically saved as settings -### -### Settings are automatically loaded as bash variables -### in every app script context, therefore typically these will exist: -### - $domain -### - $path -### - $language -### ... etc -### -### Resources defined in the manifest are provisioned prior to this script -### and corresponding settings are also available, such as: -### - $install_dir -### - $port -### - $db_name -### ... -### -### $app is the app id (i.e. 'example' for first install, -### or 'example__2', '__3', ... for multi-instance installs) - #================================================= -# INITIALIZE AND STORE SETTINGS +# INSTALL DEPENDENCIES #================================================= +ynh_script_progression --message="Installing dependencies..." --weight=3 -# If you need to, you can define custom settings -# (or remove this section entirely if not relevant for you) -foo="bar" -ynh_app_setting_set --app=$app --key=foo --value=$foo +ynh_install_nodejs --nodejs_version=$NODEJS_VERSION -#================================================= -# APP "BUILD" (DEPLOYING SOURCES, VENV, COMPILING ETC) #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Setting up source files..." --weight=1 +ynh_script_progression --message="Setting up source files..." --weight=3 -### `ynh_setup_source` is used to install an app from a zip or tar.gz file, -### downloaded from an upstream source, like a git repository. -### `ynh_setup_source` use the file manifest.toml +mkdir -p "$install_dir" +chown -R $app:www-data "$install_dir" -# Download, check integrity, uncompress and patch the source from manifest.toml -ynh_setup_source --dest_dir="$install_dir" +ynh_exec_warn ynh_exec_as $app git clone --recurse-submodules -b stable https://activitypub.software/TransFem-org/Sharkey.git "$install_dir" -### $install_dir will automatically be initialized with some decent -### permission by default ... however, you may need to recursively reapply -### ownership to all files such as after the ynh_setup_source step -chown -R "$app:www-data" "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:www-data "$install_dir" #================================================= -# SYSTEM CONFIGURATION +# NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Adding system configurations related to $app..." --weight=1 +ynh_script_progression --message="Configuring NGINX web server..." --weight=3 -### `ynh_add_fpm_config` is used to set up a PHP config. -### You can remove it if your app doesn't use PHP. -### `ynh_add_fpm_config` will use the files conf/extra_php-fpm.conf -### If you're not using these lines: -### - You can remove these files in conf/. -### - Remove the section "BACKUP THE PHP-FPM CONFIGURATION" in the backup script -### - Remove also the section "REMOVE PHP-FPM CONFIGURATION" in the remove script -### - As well as the section "RESTORE THE PHP-FPM CONFIGURATION" in the restore script -### with the reload at the end of the script. -### - And the section "PHP-FPM CONFIGURATION" in the upgrade script - -# Create a PHP-FPM config (with conf/extra_php-fpm.conf being appended to it) -ynh_add_fpm_config - -# Create a dedicated NGINX config using the conf/nginx.conf template +# Create a dedicated NGINX config ynh_add_nginx_config -### `ynh_systemd_config` is used to configure a systemd script for an app. -### It can be used for apps that use sysvinit (with adaptation) or systemd. -### Have a look at the app to be sure this app needs a systemd script. -### `ynh_systemd_config` will use the file conf/systemd.service -### If you're not using these lines: -### - You can remove those files in conf/. -### - Remove the section "BACKUP SYSTEMD" in the backup script -### - Remove also the section "STOP AND REMOVE SERVICE" in the remove script -### - As well as the section "RESTORE SYSTEMD" in the restore script -### - And the section "SETUP SYSTEMD" in the upgrade script - -# Create a dedicated systemd config -ynh_add_systemd_config - -### `yunohost service add` integrates a service in YunoHost. It then gets -### displayed in the admin interface and through the others `yunohost service` commands. -### (N.B.: this line only makes sense if the app adds a service to the system!) -### If you're not using these lines: -### - You can remove these files in conf/. -### - Remove the section "REMOVE SERVICE INTEGRATION IN YUNOHOST" in the remove script -### - As well as the section "INTEGRATE SERVICE IN YUNOHOST" in the restore script -### - And the section "INTEGRATE SERVICE IN YUNOHOST" in the upgrade script - -### Additional options starting with 3.8: -### -### --needs_exposed_ports "$port" a list of ports that needs to be publicly exposed -### which will then be checked by YunoHost's diagnosis system -### (N.B. DO NOT USE THIS if the port is only internal!!!) -### -### --test_status "some command" a custom command to check the status of the service -### (only relevant if 'systemctl status' doesn't do a good job) -### -### --test_conf "some command" some command similar to "nginx -t" that validates the conf of the service -### -### Re-calling 'yunohost service add' during the upgrade script is the right way -### to proceed if you later realize that you need to enable some flags that -### weren't enabled on old installs (be careful it'll override the existing -### service though so you should re-provide all relevant flags when doing so) -yunohost service add "$app" --description="A short description of the app" --log="/var/log/$app/$app.log" - -### `ynh_use_logrotate` is used to configure a logrotate configuration for the logs of this app. -### Use this helper only if there is effectively a log file for this app. -### If you're not using this helper: -### - Remove the section "BACKUP LOGROTATE" in the backup script -### - Remove also the section "REMOVE LOGROTATE CONFIGURATION" in the remove script -### - As well as the section "RESTORE THE LOGROTATE CONFIGURATION" in the restore script -### - And the section "SETUP LOGROTATE" in the upgrade script - -# Use logrotate to manage application logfile(s) -ynh_use_logrotate - -# Create a dedicated Fail2Ban config -ynh_add_fail2ban_config --logpath="/var/log/nginx/${domain}-error.log" --failregex="Regex to match into the log for a failed login" - -#================================================= -# APP INITIAL CONFIGURATION #================================================= # ADD A CONFIGURATION #================================================= ynh_script_progression --message="Adding a configuration file..." --weight=1 -### You can add specific configuration files. -### -### Typically, put your template conf file in ../conf/your_config_file -### The template may contain strings such as __FOO__ or __FOO_BAR__, -### which will automatically be replaced by the values of $foo and $foo_bar -### -### ynh_add_config will also keep track of the config file's checksum, -### which later during upgrade may allow to automatically backup the config file -### if it's found that the file was manually modified -### -### Check the documentation of `ynh_add_config` for more info. +# Configure redis +redis_db=$(ynh_redis_get_free_db) +ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" -ynh_add_config --template="some_config_file" --destination="$install_dir/some_config_file" - -# FIXME: this should be handled by the core in the future -### You may need to use chmod 600 instead of 400, -### for example if the app is expected to be able to modify its own config -chmod 400 "$install_dir/some_config_file" -chown "$app:$app" "$install_dir/some_config_file" - -### For more complex cases where you want to replace stuff using regexes, -### you shoud rely on ynh_replace_string (which is basically a wrapper for sed) -### When doing so, you also need to manually call ynh_store_file_checksum -### -### ynh_replace_string --match_string="match_string" --replace_string="replace_string" --target_file="$install_dir/some_config_file" -### ynh_store_file_checksum --file="$install_dir/some_config_file" +ynh_add_config --template="../conf/default.yml" --destination="$install_dir/.config/default.yml" #================================================= -# SETUP APPLICATION WITH CURL +# BUILD APP #================================================= +ynh_script_progression --message="Building app..." --weight=15 -### Use these lines only if the app installation needs to be finalized through -### web forms. We generally don't want to ask the final user, -### so we're going to use curl to automatically fill the fields and submit the -### forms. - -# Installation with curl -ynh_script_progression --message="Finalizing installation..." --weight=1 -ynh_local_curl "/INSTALL_PATH" "key1=value1" "key2=value2" "key3=value3" +pushd "$install_dir" + ynh_use_nodejs + corepack enable + corepack prepare pnpm@latest --activate + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm install --frozen-lockfile + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production pnpm build + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm run init + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production pnpm run start +popd #================================================= -# GENERIC FINALIZATION +# SETUP SYSTEMD +#================================================= +ynh_script_progression --message="Configuring a systemd service..." --weight=1 + +# Create a dedicated systemd config +ynh_add_systemd_config + +#================================================= +# SETUP LOGROTATE +#================================================= +ynh_script_progression --message="Configuring log rotation..." --weight=1 + +# Use logrotate to manage application logfile(s) +ynh_use_logrotate + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="A interplanetary blogging platform" --log="/var/log/$app/$app.log" + #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=1 -### `ynh_systemd_action` is used to start a systemd service for an app. -### Only needed if you have configure a systemd service -### If you're not using these lines: -### - Remove the section "STOP SYSTEMD SERVICE" and "START SYSTEMD SERVICE" in the backup script -### - As well as the section "START SYSTEMD SERVICE" in the restore script -### - As well as the section"STOP SYSTEMD SERVICE" and "START SYSTEMD SERVICE" in the upgrade script -### - And the section "STOP SYSTEMD SERVICE" and "START SYSTEMD SERVICE" in the change_url script - # Start a systemd service -ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name=$app --action="start" --log_path=systemd #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of $app completed" --last + +ynh_script_progression --message="Installation of $app completed" diff --git a/scripts/remove b/scripts/remove index 9369d1b..024bc86 100755 --- a/scripts/remove +++ b/scripts/remove @@ -9,48 +9,65 @@ source _common.sh source /usr/share/yunohost/helpers -### Settings are automatically loaded as bash variables -### in every app script context, therefore typically these will exist: -### - $domain -### - $path -### - $language -### - $install_dir -### - $port -### ... - -### For remove operations : -### - the core will deprovision every resource defined in the manifest **after** this script is ran -### this includes removing the install directory, and data directory (if --purge was used) - #================================================= -# REMOVE SYSTEM CONFIGURATIONS +# STANDARD REMOVE +#================================================= +# REMOVE SERVICE INTEGRATION IN YUNOHOST #================================================= -ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 - -### This should be a symetric version of what happens in the install script # Remove the service from the list of services known by YunoHost (added from `yunohost service add`) -if ynh_exec_warn_less yunohost service status "$app" >/dev/null; then - ynh_script_progression --message="Removing $app service integration..." --weight=1 - yunohost service remove "$app" +if ynh_exec_warn_less yunohost service status $app >/dev/null +then + ynh_script_progression --message="Removing $app service integration..." --weight=1 + yunohost service remove $app fi -ynh_remove_fail2ban_config - -ynh_remove_logrotate +#================================================= +# STOP AND REMOVE SERVICE +#================================================= +ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1 +# Remove the dedicated systemd config ynh_remove_systemd_config +#================================================= +# REMOVE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Removing logrotate configuration..." --weight=1 + +# Remove the app-specific logrotate config +ynh_remove_logrotate + +#================================================= +# REMOVE THE REDIS DATABASE +#================================================= +ynh_script_progression --message="Removing the redis database..." --weight=1 + +ynh_redis_remove_db "$redis_db" + +#================================================= +# REMOVE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 + +# Remove the dedicated NGINX config ynh_remove_nginx_config -ynh_remove_fpm_config +#================================================= +# REMOVE DEPENDENCIES +#================================================= +ynh_script_progression --message="Removing dependencies..." --weight=1 -# Remove other various files specific to the app... such as : +# Remove metapackage and its dependencies +ynh_remove_nodejs -ynh_secure_remove --file="/etc/cron.d/$app" - -ynh_secure_remove --file="/etc/$app" +#================================================= +# SPECIFIC REMOVE +#================================================= +# REMOVE VARIOUS FILES +#================================================= +# Remove the log files ynh_secure_remove --file="/var/log/$app" #================================================= diff --git a/scripts/restore b/scripts/restore index 29e7bca..e65409e 100755 --- a/scripts/restore +++ b/scripts/restore @@ -17,76 +17,68 @@ ynh_script_progression --message="Restoring the app main directory..." --weight= ynh_restore_file --origin_path="$install_dir" -### $install_dir will automatically be initialized with some decent -### permissions by default ... however, you may need to recursively reapply -### ownership to all files such as after the ynh_setup_source step -chown -R "$app:www-data" "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:www-data "$install_dir" #================================================= -# RESTORE THE DATA DIRECTORY +# SPECIFIC RESTORATION #================================================= -ynh_script_progression --message="Restoring the data directory..." --weight=1 +# REINSTALL DEPENDENCIES +#================================================= +#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." --weight=5 -ynh_restore_file --origin_path="$data_dir" --not_mandatory - -### (Same as for install dir) -chown -R "$app:www-data" "$data_dir" +# Define and install dependencies +ynh_install_nodejs --nodejs_version=$NODEJS_VERSION #================================================= -# RESTORE THE MYSQL DATABASE +# RESTORE THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the MySQL database..." --weight=1 - -ynh_mysql_connect_as --user="$db_user" --password="$db_pwd" --database="$db_name" < ./db.sql - -#================================================= -# RESTORE SYSTEM CONFIGURATIONS -#================================================= -ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 - -### This should be a symetric version of what happens in the install script - -ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" +ynh_script_progression --message="Restoring the NGINX web server configuration..." ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_restore_file --origin_path="/etc/systemd/system/$app.service" -systemctl enable "$app.service" --quiet +#================================================= +# RESTORE THE POSTGRESQL DATABASE +#================================================= +ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=1 -yunohost service add "$app" --description="A short description of the app" --log="/var/log/$app/$app.log" +ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name + +#================================================= +# RESTORE SYSTEMD +#================================================= +ynh_script_progression --message="Restoring the systemd configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/systemd/system/$app.service" +systemctl enable $app.service --quiet + +#================================================= +# RESTORE THE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 ynh_restore_file --origin_path="/etc/logrotate.d/$app" -ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf" -ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf" -ynh_systemd_action --action=restart --service_name=fail2ban +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="A interplanetary blogging platform" --log="/var/log/$app/$app.log" #================================================= -# RESTORE VARIOUS FILES +# START SYSTEMD SERVICE #================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 -ynh_restore_file --origin_path="/etc/cron.d/$app" -ynh_restore_file --origin_path="/etc/$app/" - -### For apps with huge logs, you might want to not backup logs every time: -### The mkdir call is just here in case the log directory was not backed up. -### mkdir -p "/var/log/$app" -### chown $app:www-data "/var/log/$app" -### ynh_restore_file --src_path="/var/log/$app/" --not_mandatory -### -### For other apps, the simple way is better: -ynh_restore_file --origin_path="/var/log/$app/" +ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" #================================================= # GENERIC FINALIZATION #================================================= -# RELOAD NGINX AND PHP-FPM OR THE APP SERVICE +# RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1 - -### Typically you only have either $app or php-fpm but not both at the same time... -ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" -ynh_systemd_action --service_name="php$phpversion-fpm" --action=reload +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/upgrade b/scripts/upgrade index 51c54db..05b3226 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -9,125 +9,97 @@ source _common.sh source /usr/share/yunohost/helpers -### Settings are automatically loaded as bash variables -### in every app script context, therefore typically these will exist: -### - $domain -### - $path -### - $language -### - $install_dir -### - $port -### ... - -### In the context of upgrade, -### - resources are automatically provisioned / updated / deleted (depending on existing resources) -### - a safety backup is automatically created by the core and will be restored if the upgrade fails - -### This variable describes which upgrade type is occurring, allowing the script to handle different modes: -### - UPGRADE_PACKAGE if only the YunoHost package has changed -### - UPGRADE_APP if the upstream app version has changed -### If your package needs to handle other things, like same-version upgrades or downgrades, please -### check out the $YNH_APP_UPGRADE_TYPE variable that can contain DOWNGRADE and UPGRADE_SAME too. -# upgrade_type=$(ynh_check_app_version_changed) - #================================================= -# STANDARD UPGRADE STEPS +# CHECK VERSION #================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= -#ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 -### N.B. : the following setting migration snippets are provided as *EXAMPLES* -### of what you may want to do in some cases (e.g. a setting was not defined on -### some legacy installs and you therefore want to initiaze stuff during upgrade) - -# If db_name doesn't exist, create it -# if [ -z "$db_name" ]; then -# db_name=$(ynh_sanitize_dbid --db_name=$app) -# ynh_app_setting_set --app=$app --key=db_name --value=$db_name -# fi - -# If install_dir doesn't exist, create it -# if [ -z "$install_dir" ]; then -# install_dir=/var/www/$app -# ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir -# fi +upgrade_type=$(ynh_check_app_version_changed) #================================================= # STOP SYSTEMD SERVICE #================================================= ynh_script_progression --message="Stopping a systemd service..." --weight=1 -ynh_systemd_action --service_name="$app" --action="stop" --log_path="/var/log/$app/$app.log" +# Stop bservice before backup, to not loose message in case of failed upgrade and restore +ynh_systemd_action --service_name=$app --action="stop" --log_path=systemd -#================================================= -# "REBUILD" THE APP (DEPLOY NEW SOURCES, RERUN NPM BUILD...) #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Upgrading source files..." --weight=1 +if [ "$upgrade_type" == "UPGRADE_APP" ] +then + ynh_script_progression --message="Upgrading source files..." -# Download, check integrity, uncompress and patch the source from manifest.toml -ynh_setup_source --dest_dir="$install_dir" + # Download, check integrity, uncompress and patch the source from app.src + ynh_setup_source --dest_dir="$install_dir" --keep=".config/default.yml" +fi -### $install_dir will automatically be initialized with some decent -### permissions by default ... however, you may need to recursively reapply -### ownership to all files such as after the ynh_setup_source step -chown -R "$app:www-data" "$install_dir" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:www-data "$install_dir" #================================================= -# REAPPLY SYSTEM CONFIGURATIONS +# UPGRADE DEPENDENCIES #================================================= -ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 +ynh_script_progression --message="Upgrading dependencies..." --weight=5 -### This should be a literal copypaste of what happened in the install's "System configuration" section +ynh_install_nodejs --nodejs_version=$NODEJS_VERSION -ynh_add_fpm_config +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 +# Create a dedicated NGINX config ynh_add_nginx_config +#================================================= +# BUILD APP +#================================================= +ynh_script_progression --message="Building app..." + +pushd "$install_dir" + git checkout stable + git pull --recurse-submodules + ynh_use_nodejs + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm cleanall + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm install --frozen-lockfile + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production pnpm build + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm migrate +popd + +#================================================= +# SETUP SYSTEMD +#================================================= +ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 + +# Create a dedicated systemd config ynh_add_systemd_config -yunohost service add "$app" --description="A short description of the app" --log="/var/log/$app/$app.log" +#================================================= +# GENERIC FINALIZATION +#================================================= +# SETUP LOGROTATE +#================================================= +ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 +# Use logrotate to manage app-specific logfile(s) ynh_use_logrotate --non-append -ynh_add_fail2ban_config --logpath="/var/log/nginx/${domain}-error.log" --failregex="Regex to match into the log for a failed login" - #================================================= -# RECONFIGURE THE APP (UPDATE CONF, APPLY MIGRATIONS...) +# INTEGRATE SERVICE IN YUNOHOST #================================================= -# UPDATE A CONFIG FILE -#================================================= -ynh_script_progression --message="Updating a configuration file..." --weight=1 +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -### Same as during install -### -### The file will automatically be backed-up if it's found to be manually modified (because -### ynh_add_config keeps track of the file's checksum) - -ynh_add_config --template="some_config_file" --destination="$install_dir/some_config_file" - -# FIXME: this should be handled by the core in the future -### You may need to use chmod 600 instead of 400, -### for example if the app is expected to be able to modify its own config -chmod 400 "$install_dir/some_config_file" -chown "$app:$app" "$install_dir/some_config_file" - -### For more complex cases where you want to replace stuff using regexes, -### you shoud rely on ynh_replace_string (which is basically a wrapper for sed) -### When doing so, you also need to manually call ynh_store_file_checksum -### -### ynh_replace_string --match_string="match_string" --replace_string="replace_string" --target_file="$install_dir/some_config_file" -### ynh_store_file_checksum --file="$install_dir/some_config_file" +yunohost service add $app --description="A interplanetary blogging platform" --log="/var/log/$app/$app.log" #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=1 -ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" - +ynh_systemd_action --service_name=$app --action="start" --log_path=systemd #================================================= # END OF SCRIPT #================================================= diff --git a/sources/extra_files/app/.gitignore b/sources/extra_files/app/.gitignore deleted file mode 100644 index 783a4ae..0000000 --- a/sources/extra_files/app/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*~ -*.sw[op] diff --git a/sources/patches/.gitignore b/sources/patches/.gitignore deleted file mode 100644 index 783a4ae..0000000 --- a/sources/patches/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*~ -*.sw[op] diff --git a/tests.toml b/tests.toml index 76f5804..3fbad86 100644 --- a/tests.toml +++ b/tests.toml @@ -1,78 +1,7 @@ -#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/tests.v1.schema.json - test_format = 1.0 [default] - # ------------ - # Tests to run - # ------------ - - # ------------------------------------------------------------------------------- - # EVERYTHING PAST THIS POINT IS OPTIONAL AND MOST LIKELY UNNECESSARY FOR NEW APPS - #-------------------------------------------------------------------------------- - ## Conventions in this sample: - ## <- An actual comment - # <- uncommenting this should be a valid entry in 'tests.toml' - - ## NB: the tests to run are automatically deduced by the CI script according to the - ## content of the app's manifest. The declarations below allow to customize which - ## tests are ran, possibly add special test suite to test special args, or - ## declare which commits to test upgrade from. - ## - ## You can also decide (though this is discouraged!) to ban/ignore some tests, - ## The test IDs to be used in only/exclude statements are: - ## * install.root - ## * install.subdir - ## * install.nourl - ## * install.multi - ## * backup_restore - ## * upgrade - ## * upgrade.someCommitId - ## * change_url - ## NB: you should NOT need this except if you really have a good reason... - - # exclude = ["install.private", "install.multi"] - - ## For special usecases, sometimes you need to setup other things on the machine - ## prior to installing the app (such as installing another app) - ## (Remove this key entirely if not needed) - - # preinstall = """ - # sudo yunohost app install foobar - # sudo yunohost user list - # """ - - # ------------------------------- - # Default args to use for install - # ------------------------------- - - ## By default, the CI will automagically fill the 'standard' args - ## such as domain, path, admin, is_public and password with relevant values - ## and also install args with a "default" provided in the manifest.. - ## It should only make sense to declare custom args here for args with no default values - ## NB: you should NOT need those lines unless for custom questions with no obvious/default value - - # args.language = "fr_FR" - # args.multisite = 0 - # ------------------------------- # Commits to test upgrade from - # ------------------------------- - - ## 00a1a6e7 is part of commit SHA, preferrably from 'master' branch - ## that points to valid install of previous version - - # test_upgrade_from.00a1a6e7.name = "Upgrade from 5.4" - # test_upgrade_from.00a1a6e7.args.foo = "bar" - - -## This is an additional test suite -# [some_additional_testsuite] - - ## On additional tests suites, you can decide to run only specific tests - - # only = ["install.subdir"] - - # args.language = "en_GB" - # args.multisite = 1 + # ------------------------------- \ No newline at end of file From caeb6dce6bc63e7e75f247ed8a1671eedd7bb100 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Wed, 7 Feb 2024 18:32:03 +0000 Subject: [PATCH 02/10] Auto-update README --- README.md | 29 ++++++++++++----------------- README_fr.md | 30 +++++++++++++----------------- 2 files changed, 25 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 96f8003..1c1da4c 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,15 @@ N.B.: This README was automatically generated by https://github.com/YunoHost/app It shall NOT be edited by hand. --> -# Misskey for YunoHost +# Sharkey for YunoHost -[![Integration level](https://dash.yunohost.org/integration/misskey.svg)](https://dash.yunohost.org/appci/app/misskey) ![Working status](https://ci-apps.yunohost.org/ci/badges/misskey.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/misskey.maintain.svg) +[![Integration level](https://dash.yunohost.org/integration/sharkey.svg)](https://dash.yunohost.org/appci/app/sharkey) ![Working status](https://ci-apps.yunohost.org/ci/badges/sharkey.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/sharkey.maintain.svg) -[![Install Misskey with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=misskey) +[![Install Sharkey with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=sharkey) *[Lire ce readme en français.](./README_fr.md)* -> *This package allows you to install Misskey quickly and simply on a YunoHost server. +> *This package allows you to install Sharkey quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview @@ -19,29 +19,24 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in Misskey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. -**Shipped version:** 12.119.2~ynh1 - -## Screenshots - -![Screenshot of Misskey](./doc/screenshots/screenshot-desktop.png) - +**Shipped version:** 2023.12.0~ynh1 ## Documentation and resources -* Official app website: -* Upstream app code repository: -* YunoHost documentation for this app: -* Report a bug: +* Official app website: +* Upstream app code repository: +* YunoHost Store: +* Report a bug: ## Developer info -Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/misskey_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/sharkey_ynh/tree/testing). To try the testing branch, please proceed like that. ``` bash -sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug +sudo yunohost app install https://github.com/YunoHost-Apps/sharkey_ynh/tree/testing --debug or -sudo yunohost app upgrade misskey -u https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug +sudo yunohost app upgrade sharkey -u https://github.com/YunoHost-Apps/sharkey_ynh/tree/testing --debug ``` **More info regarding app packaging:** diff --git a/README_fr.md b/README_fr.md index bba54f5..ed0f27e 100644 --- a/README_fr.md +++ b/README_fr.md @@ -3,43 +3,39 @@ N.B.: This README was automatically generated by https://github.com/YunoHost/app It shall NOT be edited by hand. --> -# Misskey pour YunoHost +# Sharkey pour YunoHost -[![Niveau d’intégration](https://dash.yunohost.org/integration/misskey.svg)](https://dash.yunohost.org/appci/app/misskey) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/misskey.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/misskey.maintain.svg) +[![Niveau d’intégration](https://dash.yunohost.org/integration/sharkey.svg)](https://dash.yunohost.org/appci/app/sharkey) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/sharkey.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/sharkey.maintain.svg) -[![Installer Misskey avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=misskey) +[![Installer Sharkey avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=sharkey) *[Read this readme in english.](./README.md)* -> *Ce package vous permet d’installer Misskey rapidement et simplement sur un serveur YunoHost. +> *Ce package vous permet d’installer Sharkey rapidement et simplement sur un serveur YunoHost. Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l’installer et en profiter.* ## Vue d’ensemble Misskey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. -**Version incluse :** 12.119.2~ynh1 - - -![Capture d’écran de Misskey](./doc/screenshots/screenshot-desktop.png) - +**Version incluse :** 2023.12.0~ynh1 ## Documentations et ressources -* Site officiel de l’app : -* Dépôt de code officiel de l’app : -* Documentation YunoHost pour cette app : -* Signaler un bug : +* Site officiel de l’app : +* Dépôt de code officiel de l’app : +* YunoHost Store: +* Signaler un bug : ## Informations pour les développeurs -Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/misskey_ynh/tree/testing). +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/sharkey_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. ``` bash -sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug +sudo yunohost app install https://github.com/YunoHost-Apps/sharkey_ynh/tree/testing --debug ou -sudo yunohost app upgrade misskey -u https://github.com/YunoHost-Apps/misskey_ynh/tree/testing --debug +sudo yunohost app upgrade sharkey -u https://github.com/YunoHost-Apps/sharkey_ynh/tree/testing --debug ``` -**Plus d’infos sur le packaging d’applications :** +**Plus d’infos sur le packaging d’applications :** \ No newline at end of file From e7d4dc58ad71895a125dfae3b2aff9f4b90202fc Mon Sep 17 00:00:00 2001 From: oufmilo <44617467+oufmilo@users.noreply.github.com> Date: Wed, 7 Feb 2024 19:36:29 +0100 Subject: [PATCH 03/10] Add screenshot + config --- conf/default.yml | 148 +++++++++++++++++++++++++ doc/screenshots/screenshot-desktop.png | Bin 0 -> 238006 bytes 2 files changed, 148 insertions(+) create mode 100644 conf/default.yml create mode 100644 doc/screenshots/screenshot-desktop.png diff --git a/conf/default.yml b/conf/default.yml new file mode 100644 index 0000000..4ec0357 --- /dev/null +++ b/conf/default.yml @@ -0,0 +1,148 @@ +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# Sharkey configuration +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +# ┌─────┐ +#───┘ URL └───────────────────────────────────────────────────── + +# Final accessible URL seen by a user. +url: https://__DOMAIN__/ + +# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE +# URL SETTINGS AFTER THAT! + +# ┌───────────────────────┐ +#───┘ Port and TLS settings └─────────────────────────────────── + +# +# Sharkey requires a reverse proxy to support HTTPS connections. +# +# +----- https://example.tld/ ------------+ +# +------+ |+-------------+ +----------------+| +# | User | ---> || Proxy (443) | ---> | Sharkey (3000) || +# +------+ |+-------------+ +----------------+| +# +---------------------------------------+ +# +# You need to set up a reverse proxy. (e.g. nginx) +# An encrypted connection with HTTPS is highly recommended +# because tokens may be transferred in GET requests. + +# The port that your Misskey server should listen on. +port: __PORT__ + +# ┌──────────────────────────┐ +#───┘ PostgreSQL configuration └──────────────────────────────── + +db: + host: localhost + port: 5432 + + # Database name + db: __DB_NAME__ + + # Auth + user: __DB_USER__ + pass: __DB_PWD__ + + # Whether disable Caching queries + #disableCache: true + + # Extra Connection options + #extra: + # ssl: true + +# ┌─────────────────────┐ +#───┘ Redis configuration └───────────────────────────────────── + +redis: + host: localhost + port: 6379 + #pass: example-pass + #prefix: example-prefix + db: __REDIS_DB__ + +# ┌─────────────────────────────┐ +#───┘ Elasticsearch configuration └───────────────────────────── + +#elasticsearch: +# host: localhost +# port: 9200 +# ssl: false +# user: +# pass: + +# ┌───────────────┐ +#───┘ ID generation └─────────────────────────────────────────── + +# You can select the ID generation method. +# You don't usually need to change this setting, but you can +# change it according to your preferences. + +# Available methods: +# aid ... Short, Millisecond accuracy +# meid ... Similar to ObjectID, Millisecond accuracy +# ulid ... Millisecond accuracy +# objectid ... This is left for backward compatibility + +# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE +# ID SETTINGS AFTER THAT! + +id: 'aid' + +# ┌─────────────────────┐ +#───┘ Other configuration └───────────────────────────────────── + +# Whether disable HSTS +#disableHsts: true + +# Number of worker processes +#clusterLimit: 1 + +# Job concurrency per worker +# deliverJobConcurrency: 128 +# inboxJobConcurrency: 16 + +# Job rate limiter +# deliverJobPerSec: 128 +# inboxJobPerSec: 16 + +# Job attempts +# deliverJobMaxAttempts: 12 +# inboxJobMaxAttempts: 8 + +# IP address family used for outgoing request (ipv4, ipv6 or dual) +#outgoingAddressFamily: ipv4 + +# Syslog option +#syslog: +# host: localhost +# port: 514 + +# Proxy for HTTP/HTTPS +#proxy: http://127.0.0.1:3128 + +#proxyBypassHosts: [ +# 'example.com', +# '192.0.2.8' +#] + +# Proxy for SMTP/SMTPS +#proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT +#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4 +#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5 + +# Media Proxy +#mediaProxy: https://example.com/proxy + +# Proxy remote files (default: false) +#proxyRemoteFiles: true + +# Sign to ActivityPub GET request (default: false) +#signToActivityPubGet: true + +#allowedPrivateNetworks: [ +# '127.0.0.1/32' +#] + +# Upload or download file size limits (bytes) +#maxFileSize: 262144000 diff --git a/doc/screenshots/screenshot-desktop.png b/doc/screenshots/screenshot-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..e765bf851829b268b67b688c162642a7679238b7 GIT binary patch literal 238006 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�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
  • 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

    ^M-9lZt&Fb7cAT!W(3GOCScGCu+FG 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 L Date: Wed, 7 Feb 2024 18:37:32 +0000 Subject: [PATCH 04/10] Auto-update README --- README.md | 5 +++++ README_fr.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/README.md b/README.md index 1c1da4c..d222e79 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,11 @@ Misskey is a decentralized microblogging platform. Since it exists within the Fe **Shipped version:** 2023.12.0~ynh1 + +## Screenshots + +![Screenshot of Sharkey](./doc/screenshots/screenshot-desktop.png) + ## Documentation and resources * Official app website: diff --git a/README_fr.md b/README_fr.md index ed0f27e..531613f 100644 --- a/README_fr.md +++ b/README_fr.md @@ -19,6 +19,11 @@ Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po Misskey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. **Version incluse :** 2023.12.0~ynh1 + +## Captures d’écran + +![Capture d’écran de Sharkey](./doc/screenshots/screenshot-desktop.png) + ## Documentations et ressources * Site officiel de l’app : From 09e65c0b31d9b576cf2683b3f107b094e240ffd3 Mon Sep 17 00:00:00 2001 From: oufmilo <44617467+oufmilo@users.noreply.github.com> Date: Wed, 7 Feb 2024 20:21:56 +0100 Subject: [PATCH 05/10] Fix warning + description + admin --- doc/ADMIN.md | 13 ------------- doc/ADMIN_fr.md | 13 ------------- doc/DESCRIPTION.md | 2 +- doc/DESCRIPTION_fr.md | 2 +- scripts/install | 2 +- scripts/upgrade | 4 ++-- 6 files changed, 5 insertions(+), 31 deletions(-) diff --git a/doc/ADMIN.md b/doc/ADMIN.md index faa1266..f2febaf 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -1,16 +1,3 @@ ### Important points to read before installing - The first account created will be an admin user and will have all the admin rights. - -Using screen in case of disconnects - -``` -sudo apt-get install screen -screen -sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh.git -``` -Recover after disconnect: -``` -screen -d -screen -r -``` diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index 0a7af8b..4463911 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -1,16 +1,3 @@ ### Points importants à lire avant l'installation - Le premier compte créé sera un utilisateur administrateur et disposera de tous les droits d'administrateur. - -Utiliser *screen* en cas de déconnexion - -``` -sudo apt-get install screen -screen -sudo yunohost app install https://github.com/YunoHost-Apps/misskey_ynh.git -``` -Récupérer après déconnexion : -``` -screen -d -screen -r -``` diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index f1d9c76..c046f94 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1 +1 @@ -Misskey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. +Sharkey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md index e17cec6..d4c6f15 100644 --- a/doc/DESCRIPTION_fr.md +++ b/doc/DESCRIPTION_fr.md @@ -1 +1 @@ -Misskey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. \ No newline at end of file +Sharkey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. \ No newline at end of file diff --git a/scripts/install b/scripts/install index 2ddd556..d690d90 100755 --- a/scripts/install +++ b/scripts/install @@ -24,7 +24,7 @@ ynh_script_progression --message="Setting up source files..." --weight=3 mkdir -p "$install_dir" chown -R $app:www-data "$install_dir" -ynh_exec_warn ynh_exec_as $app git clone --recurse-submodules -b stable https://activitypub.software/TransFem-org/Sharkey.git "$install_dir" +ynh_exec_warn_less git clone --recurse-submodules -b stable https://activitypub.software/TransFem-org/Sharkey.git "$install_dir" chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" diff --git a/scripts/upgrade b/scripts/upgrade index 05b3226..2432a3b 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -60,8 +60,8 @@ ynh_add_nginx_config ynh_script_progression --message="Building app..." pushd "$install_dir" - git checkout stable - git pull --recurse-submodules + ynh_exec_warn_less git checkout stable + ynh_exec_warn_less git pull --recurse-submodules ynh_use_nodejs ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm cleanall ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm install --frozen-lockfile From 2c6052dd823f1ebec5ad18891f52afe4d6fa021d Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Wed, 7 Feb 2024 19:23:00 +0000 Subject: [PATCH 06/10] Auto-update README --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d222e79..e3b4b85 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -Misskey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. +Sharkey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. **Shipped version:** 2023.12.0~ynh1 diff --git a/README_fr.md b/README_fr.md index 531613f..a1c559c 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po ## Vue d’ensemble -Misskey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. +Sharkey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. **Version incluse :** 2023.12.0~ynh1 From a254d4be1eb8a6cc649ca9282c4d696e684bd572 Mon Sep 17 00:00:00 2001 From: oufmilo <44617467+oufmilo@users.noreply.github.com> Date: Wed, 7 Feb 2024 21:29:26 +0100 Subject: [PATCH 07/10] Update install --- scripts/install | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/install b/scripts/install index d690d90..9ded27e 100755 --- a/scripts/install +++ b/scripts/install @@ -60,7 +60,6 @@ pushd "$install_dir" ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm install --frozen-lockfile ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production pnpm build ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm run init - ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production pnpm run start popd #================================================= From 5908f0ba0d7aac71438dd5c2ebc2efbe6a1ebe1d Mon Sep 17 00:00:00 2001 From: oufmilo <44617467+oufmilo@users.noreply.github.com> Date: Wed, 7 Feb 2024 22:34:34 +0100 Subject: [PATCH 08/10] Fix restore + upgrade --- scripts/restore | 14 ++++++++++++++ scripts/upgrade | 9 +++++---- tests.toml | 6 ++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/scripts/restore b/scripts/restore index e65409e..5443a51 100755 --- a/scripts/restore +++ b/scripts/restore @@ -30,6 +30,20 @@ chown -R $app:www-data "$install_dir" # Define and install dependencies ynh_install_nodejs --nodejs_version=$NODEJS_VERSION +#================================================= +# REINSTALL PNPM +#================================================= +ynh_script_progression --message="Reinstalling PNPM..." --weight=1 + +# Define and install pnpm +pushd "$install_dir" + ynh_use_nodejs + corepack enable + corepack prepare pnpm@latest --activate + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm install --frozen-lockfile + ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production pnpm build +popd + #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 2432a3b..4444cad 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -31,8 +31,11 @@ if [ "$upgrade_type" == "UPGRADE_APP" ] then ynh_script_progression --message="Upgrading source files..." - # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$install_dir" --keep=".config/default.yml" + pushd $install_dir + chown -R $app:www-data "$install_dir" + ynh_exec_warn_less ynh_exec_as $app git checkout stable + ynh_exec_warn_less ynh_exec_as $app git pull --recurse-submodules + popd fi chmod 750 "$install_dir" @@ -60,8 +63,6 @@ ynh_add_nginx_config ynh_script_progression --message="Building app..." pushd "$install_dir" - ynh_exec_warn_less git checkout stable - ynh_exec_warn_less git pull --recurse-submodules ynh_use_nodejs ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm cleanall ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH pnpm install --frozen-lockfile diff --git a/tests.toml b/tests.toml index 3fbad86..cb3409b 100644 --- a/tests.toml +++ b/tests.toml @@ -2,6 +2,12 @@ test_format = 1.0 [default] + # ------------------------------- + # Default args to use for install + # ------------------------------- + + exclude = ["change_url"] + # ------------------------------- # Commits to test upgrade from # ------------------------------- \ No newline at end of file From b2ecb7363f9e170f3070fae86d41de3d78288641 Mon Sep 17 00:00:00 2001 From: oufmilo <44617467+oufmilo@users.noreply.github.com> Date: Thu, 8 Feb 2024 13:13:29 +0100 Subject: [PATCH 09/10] Clean --- conf/default.yml | 2 +- doc/ADMIN.md | 4 ++-- doc/ADMIN_fr.md | 4 ++-- doc/DESCRIPTION.md | 4 +++- doc/DESCRIPTION_fr.md | 3 ++- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/conf/default.yml b/conf/default.yml index 4ec0357..c845cbc 100644 --- a/conf/default.yml +++ b/conf/default.yml @@ -27,7 +27,7 @@ url: https://__DOMAIN__/ # An encrypted connection with HTTPS is highly recommended # because tokens may be transferred in GET requests. -# The port that your Misskey server should listen on. +# The port that your Sharkey server should listen on. port: __PORT__ # ┌──────────────────────────┐ diff --git a/doc/ADMIN.md b/doc/ADMIN.md index f2febaf..0d92999 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -1,3 +1,3 @@ -### Important points to read before installing +### Important points to read before installing ⚠️ -- The first account created will be an admin user and will have all the admin rights. +- The first account created will be an admin user and will have all the admin rights. 👨‍💻 diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index 4463911..e488485 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -1,3 +1,3 @@ -### Points importants à lire avant l'installation +### Points importants à lire avant l'installation ⚠️ -- Le premier compte créé sera un utilisateur administrateur et disposera de tous les droits d'administrateur. +- Le premier compte créé sera un utilisateur administrateur et disposera de tous les droits d'administrateur. 👨‍💻 diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index c046f94..4e88805 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1 +1,3 @@ -Sharkey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. +🌎 A Sharkish microblogging platform 🦈🚀 +Sharkey is an Misskey fork following upstream changes when possible, with added features! + diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md index d4c6f15..2e043a0 100644 --- a/doc/DESCRIPTION_fr.md +++ b/doc/DESCRIPTION_fr.md @@ -1 +1,2 @@ -Sharkey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. \ No newline at end of file +🌎 Une plateforme de microblogging 🦈🚀 +Sharkey est un fork de Misskey qui suit les changements en amont lorsque c'est possible, avec des fonctionnalités supplémentaires ! \ No newline at end of file From 08cfe84780cc1e5d47accc2a56a364fbdce9bc69 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Thu, 8 Feb 2024 12:13:38 +0000 Subject: [PATCH 10/10] Auto-update README --- README.md | 4 +++- README_fr.md | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e3b4b85..30957c0 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,9 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -Sharkey is a decentralized microblogging platform. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. +🌎 A Sharkish microblogging platform 🦈🚀 +Sharkey is an Misskey fork following upstream changes when possible, with added features! + **Shipped version:** 2023.12.0~ynh1 diff --git a/README_fr.md b/README_fr.md index a1c559c..1a59c19 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,8 @@ Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po ## Vue d’ensemble -Sharkey est une plateforme de microblogging décentralisée. Puisqu'il existe au sein du Fediverse (un univers où diverses plateformes de médias sociaux sont organisées), il est mutuellement lié à d'autres plateformes de médias sociaux. +🌎 Une plateforme de microblogging 🦈🚀 +Sharkey est un fork de Misskey qui suit les changements en amont lorsque c'est possible, avec des fonctionnalités supplémentaires ! **Version incluse :** 2023.12.0~ynh1